본문 바로가기
Algorithm(코딩테스트)/코딩테스트 | 기초 개념 시리즈

[JAVA] 문자, 문자열

by 카랑현석 2024. 11. 29.

기초 문법

  • ‘A’의 아스키코드 값 65, ‘a’의 아스키코드 값 97
  • 문자열의 제거, 순서 바꾸기(문자열의 형태를 바꾸는 유형) 등은 str.substing()을 이용하면 된다.
길이 문자열 : length()
배열 : length
리스트 : size()
모든 문자열을 대문자로 바꾸기 str.toUpperCase()
문자열 부분 추출 str.substring(startIndex, endIndex)
문자열 대체하기 str.replace("abc", "def") // abc를 def로 바꾼다.
같은지 비교하기 문자열 : str1.equals(str2) // str1과 str2가 같은지 검사
문자 : char1 == char2 // char1과 char2가 같은지 검사
문자열에서 특정 인덱스의 값 가져오기
Ex. String str = “abcde” 에서
str[2]는 str.charAt(2);
str.charAt(2); // str[2] 추출 (문자로 추출됨)
문자열에서 특정 문자열 찾기 str.contains("ab") // str에 “ab”가 있으면 true 반환
문자열에서 특정 문자열이 있는 인덱스 찾기 str.indexOf("ab") // str에 “ab”가 있으면 인덱스 반환 (없으면 -1 반환)

Ex)

String s = "appleabanana";

System.out.println(s.indexOf("ab")); // 5 출력
아스키코드를 이용하여 char ↔ int 변환 char c = (char) 65 // ‘A’

int c = (int) ‘A’ // 65
문자열 → 정수 Integer.parseInt() 사용

Ex)

String s = “12538”;

int ans = Integer.parseInt(s);

정수 → 문자열 Integer.toString() 사용
사전순으로 앞선 문자 확인 str1.compareTo(str2) 사용

0 : str1과 str2는 같음
0보다 작음 : str1이 사전 순으로 앞선다.
0보다 큼 : str2가 사전 순으로 앞선다.

 

StringBuffer/StringBuilder 클래스

  • String 클래스는 인스턴스를 생성할 때 문자열을 변경할 수 없음.
  • StringBuffer/StringBuilder 클래스는 문자열 변경이 가능.

 

  • 문자열 뒤집기의 경우 for문으로 일일이 하는 것보다 StringBuilder 클래스의 reverse() 메서드를 사용하는 것이 더 성능이 좋음.
  • 문자열 수정 시 성능(속도) String <<<< StringBuffer < StringBuilder
  • 결론 : 문자열 알고리즘 풀 때는 StringBuilder 클래스 사용
.append() 문자열 뒤에 덧붙이기 ( 문자열의 + 연산과 유사 )
.delete(int start, int end) 시작위치(start) ~ 끝 위치(end) 사이에 있는 문자를 제거 (끝 위치의 문자는 제외)
.deleteCharAt(int index) 지정된 위치(index)의 문자를 제거
.insert(int pos, String str) str 으로 받은 값을 지정된 위치(pos)에 추가한다.
.replace(int start, int end, String str) 지정된 범위(start~end)의 문자들을 주어진 문자열(str)로 바꾼다.  (끝 위치의 문자는 제외)
.reverse() 문자열의 순서를 거꾸로 나열한다.
   

 

String word = "abcd";
StringBuilder sb = new StringBuilder(word); // word 라는 문자열을 StringBuilder 형으로 변경하여 sb 객체에 담는다.
word = sb.reverse().toString(); // 문자열을 뒤집고 다시 String 형으로 변경하여 word에 삽입

 

문제 유형

코드트리_대문자로 바꾸기 https://www.codetree.ai/missions/4/problems/change-to-capital/description #문자↔문자열 변환
#아스키코드
#문자열 함수
코드트리_특정 문자로 시작하는 문자 https://www.codetree.ai/missions/4/problems/strings-that-start-with-a-specific-character/description #문자열 함수 연습
코드트리_Run Length 인코딩 https://www.codetree.ai/missions/4/problems/run-length-encoding/description #문자↔문자열 변환
코드트리_특정 문자열이 포함된 위치 구하기 https://www.codetree.ai/missions/4/problems/find-specific-location-in-spring/introduction #indexOf 함수 연습
코드트리_부분 문자열의 개수 https://www.codetree.ai/missions/4/problems/number-of-substrings/description #부분 문자열 개수 구하기 연습
코드트리_첫 번째와 두 번째 교환 https://www.codetree.ai/missions/4/problems/exchange-1st-and-2nd/description #문자열 합치기 + substring 연습
코드트리_문자열 계속 지우기 https://www.codetree.ai/missions/4/problems/keep-removing-string/description #indexOf + substring 제거 기법 활용
코드트리_규칙에 따라 밀기 https://www.codetree.ai/missions/4/problems/push-by-the-rules/description #substring 밀기 기법
코드트리_정수만 더하기 https://www.codetree.ai/missions/4/problems/add-only-integers/description #아스키코드로 문자 판별 테크닉
코드트리_정수만 추출하기 https://www.codetree.ai/missions/4/problems/extract-only-integers/description #문자열→숫자 테크닉, #문자열 순회, #아스키코드로 문자 판별 테크닉
⭐프로그래머스_문자열 압축 https://campus.programmers.co.kr/tryouts/139165/challenges #substring 응용
코드트리_palindrome 여부 판단하기 https://www.codetree.ai/missions/5/problems/determine-whether-palindrome-is-present/introduction #문자열 팰린드롬, #문자열 뒤집기

 

오답노트