반응형
문자열을 반복해서 다뤄야 할때, String 대신 StringBuilder를 사용하면 시간을 단축할 수 있다.
String은 불변 객체이기 때문에, 반복적인 문자열 결합시 불필요한 객체 생성 → 시간 초과를 이어진다.
코테에서 피해야 할 실수
String s = "";
s += "a" // 시간초과 위험 높음
메서드 정리
1️⃣ append() : 문자열 추가
StringBuilder sb = new StringBuilder();
sb.append("hello");
sb.append(" ");
sb.append("world");
2️⃣ toString() : 최종 문자열로 변환
String result = sb.toString();
3️⃣ 길이 확인
int len = sb.length();
4️⃣ charAt() / setCharAt() — 특정 위치 접근 및 수정
- charAt()
char c = sb.charAt(3);
- setCharAt
sb.setCharAt(0, 'A); // 0번째 값 'A'로 치환
5️⃣ insert() / delete() — 삽입 및 삭제
- insert()
sb.insert(2, "ABC"); // "hello" -> "heABCello"
- delete()
- 인덱스 범위 (start, end)
sb.delete(1, 4); // "hello" -> "ho" , 1~3 길이 삭제
- delete(-4) 같은 표현은 X
- 시작과 끝을 알려줘야함.
- deleteCharAt()
sb.deleteCharAt(0); // 특정 문자 삭제
6️⃣ reverse() - 문자열 뒤집기
sb.reverse();
- 문자열 뒤집기
- 숫자 뒤집기
7️⃣ substring() - 문자열 부분 추출
- 인덱스 범위 : [start, end]
String sub = sb.subString(1,4);
⇒ String으로 반환함
8️⃣ 문자열 비교 시 주의점
sb.toString().equals("abc")
- StringBuilder는 equals()로 문자열 비교 ❌
- 반드시 toString() 후 비교
반응형
'Algorithms' 카테고리의 다른 글
| [Java] 최단거리 구하기 알고리즘 (가중치 있는 경우/ 없는 경우) (0) | 2026.02.10 |
|---|---|
| [Python] 문자열 리스트를 정수로 변환 (0) | 2025.04.10 |
| [줄 세우기] 위상 정렬 | 백준 2252번 | python (5) | 2024.09.01 |
| [미로 탈출] DFS&BFS | 이것이 코딩이다 | python (0) | 2024.08.31 |
| [K번째 최단경로 찾기] 다익스트라 | 백준 1854번 | python (0) | 2024.08.30 |