본문 바로가기
알고리즘/문자열, 정렬

[알고리즘] 문자열 총 정리 with Java

by VIPeveloper 2022. 2. 28.
반응형

문자열 편을 다 보고 나서 나름대로 정리를 해보았다. 자고로,, 공부란 끊임없는 기억의 재조합과 반복이라고 생각한다. 이를 위해 계속해서 복습해서 내 것으로 만들어야겠다는 생각을 했다. 

문자열 알고리즘을 배우면서 나름 유효했던 배움들을 기록하고 정리해보았다.

배운 것 정리

1. Scanner

. 값을 주로 읽기 위해 사용하는 객체

. next() : 한 문자열 읽기 가능

. nextLine() : 한 줄 읽기 가능

. nextInt() : 한 정수 읽기 가능

. next().charAt(0) : 한 문자 읽기 가능

// 사용법
Scanner sc = new Scanner(System.in);

2. s.{ toUpperCase(), toLowerCase() }

. 문자열을 대문자로 바꾸기 위해 사용

String tmp = "test";
System.out.println(tmp.toUpperCase());	// TEST
System.out.println(tmp.toLowerCase());	// test

3. Character.{ isUpperCase(c), isLowerCase(c), isAlphabetic(c), isDigit(c) }

Character c = 'c';
System.out.println(Character.isLowerCase(c));	// true
System.out.println(Character.isUpperCase(c));	// false
System.out.println(Character.isAlphabetic(c));	// true
System.out.println(Character.isDigit(c));	// false

4. ASCII

'0' - '9' : 48 - 57
'A' - 'Z' : 65 - 90
'a' - 'z' : 97 - 122

5. indexOf(c)

. 해당 문자열을 순회하며 최초로 등장하는 문자의 인덱스 반환, 없다면 -1 반환

String answer = "";
System.out.println(answer.indexOf('c'));	// -1

6. substring(a), substring(a,b)

. substring(a) : a인덱스 포함해서 쭉~ . 보통 잘린 이후의 남은 문자열을 가져오고 싶을 때 쓰는 듯

. substring(a,b) : a포함 b미만 문자열을 가져온다. 자르고 싶은 문자열을 이용하고 싶을 때 쓰는 듯

String answer = "test";
System.out.println(answer.substring(0, 2));	// te
System.out.println(answer.substring(2));	// st

7. string vs stringbuilder

. string : 불변객체. 새로 참조할 때마다 새로운 메모리를 참조한다.

. stringbuilder : 가변객체. reverse() 지원.

8. Integer.parseInt(i,2)

. 2진수를 10진수로 바꿔주는 메서드

String tmp = "100";
System.out.println(Integer.parseInt(tmp, 2));	// 4

9. 중복 문자를 찾는 로직

. indexOf(c) != i 이면 중복문자가 있다는 것이다.

. 아래 표와 같이 indexOf('T')와 for문의 인덱스가 다르면, 문자가 중복되었다는 뜻

10. 문자열의 맨 끝, 문자열의 반, for문 돌 때 뒤에서 돌기, 문자열 앞

String tmp = "100";
System.out.println((tmp.length() / 2));	// 1
System.out.println((tmp.length() - 1));	// 2

// 0 0 1
for (int i = tmp.length()-1; i>=0; i--) {
	System.out.print(tmp.charAt(i)+" ");
}

11. 정규식

. 알파벳이 아닌 것은 모두 빈 문자로 바꾸고 싶을 때 사용하기

String tmp = "1, #$^%0 4535 0A";
System.out.println(tmp.replaceAll("[^A-Z]", ""));	// A

12. 문자 간 거리 구하는 로직

13. 문자열 전체를 순회하고 싶을 때, 빈 문자열 하나 추가하자

14. replace()는 chain형으로 여러번 사용 가능하다

String tmp = "#*****#";
System.out.println(tmp.replace("#","1").replace("*","0"));	// 1000001
반응형