문자열 편을 다 보고 나서 나름대로 정리를 해보았다. 자고로,, 공부란 끊임없는 기억의 재조합과 반복이라고 생각한다. 이를 위해 계속해서 복습해서 내 것으로 만들어야겠다는 생각을 했다.
문자열 알고리즘을 배우면서 나름 유효했던 배움들을 기록하고 정리해보았다.
배운 것 정리
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
'알고리즘 > 문자열, 정렬' 카테고리의 다른 글
[알고리즘] 보이는 학생 with Java (0) | 2022.03.01 |
---|---|
[알고리즘] 큰 수 출력하기 with Java (0) | 2022.03.01 |
[알고리즘] 암호 with Java, replace(), subString(a,b),parseInt(a,2) (0) | 2022.02.27 |
[알고리즘] 문자열 압축 with Java, 문자열에 빈 문자 하나 더해주기 (0) | 2022.02.27 |
[알고리즘] 가장 짧은 문자거리 with Java, 거리 구하는 것에 대한 생각 (0) | 2022.02.27 |