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

[JAVA] 문자, 문자열

by 디지털 전산일지 2024. 11. 29.

String 기초 문법

  • ‘A’의 아스키코드 값 65, ‘a’의 아스키코드 값 97
  • 문자열의 제거, 순서 바꾸기(문자열의 형태를 바꾸는 유형) 등은 str.substing()을 이용하면 된다.
길이 문자열 : length()
배열 : length
리스트 : size()
모든 문자열을 대문자로 바꾸기 str.toUpperCase()
문자열 부분 추출 (String 문자열 상태에서만 사용 가능) str.substring(startIndex, endIndex)
문자열 대체하기 str = str.replace("abc", "def") // abc를 def로 바꾼다.
앞 뒤 공백 제거 (Ex. "   Hello     " -> "Hello") str.trim()
공백을 기준으로 문자열 나누기(split) String[] words = str.split(" ") // 공백을 기준으로 문자열을 나눈다.
// 주의 : 값은 String[] 형태로 반환된다. 따라서 list 형인 것에 사용하려면
list 형으로 변환해주어야 한다. (Arrays.asList(str.split(" "))
같은지 비교하기 문자열 : 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) (65)
char c = (char) 65 // ‘A’

int c = (int) ‘A’ // 65
문자열 → 정수

Integer.parseInt()
Integer.parseInt() 사용

Ex)

String s = “12538”;

int ans = Integer.parseInt(s);

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

0 : str1과 str2는 같음
0보다 작음 : str1이 사전 순으로 앞선다.
0보다 큼 : str2가 사전 순으로 앞선다.
String -> char[]

str.toCharArray()
String input="Hello";
char[] inputArr = input.toCharArray(); // String -> char[]

System.out.println(inputArr[0]); // H
System.out.println(inputArr[1]); // e

 

StringBuffer/StringBuilder 클래스

[특징]

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

[주의사항]

  • 새롭게 합치고 싶으면 새롭게 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() 문자열의 순서를 거꾸로 나열한다.
.indexOf("A") 문자열 "A"가 있는 인덱스를 찾아 반환해준다. 없으면 -1을 반환한다.
   
참고 https://priming.tistory.com/168

 

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 #문자열 팰린드롬, #문자열 뒤집기

 

오답노트