"the first occurrence" 주의
첫 번째로 등장하는 인덱스를 리턴하는 것.
그러니까 같은 문자가 두 번 등장해도 첫 번째 인덱스만 반환
마지막 인덱스 찾으려고 했는데 lastIndexOf라는 함수가 있었음... 개삽질했넹....ㅎ...
CodeSignal 문제를 풀려고 이 난리였다.
reverseInParentheses라는 문제고, 유튜브에서 코드 찾고 공부했다.
조슈아님 고마워여......
String reverseInParentheses(String inputString) {
int firstIdx = inputString.lastIndexOf("(");
int lastIdx = inputString.indexOf(")", firstIdx);
// 지정된 위치부터 해당 문자가 있는지 확인
while(firstIdx != -1) { // 괄호가 존재하는 한
String revStr = new StringBuilder(inputString.substring(firstIdx+1, lastIdx)).reverse().toString();
// firstIdx+1은 여는 괄호 다음부터, 즉 괄호 안 글자. lastIdx는 포함되지 않으므로 닫는 괄호 직전의 문자까지
String first = inputString.substring(0,firstIdx);
// 괄호 이전의 글자를 자르는 것
String last = inputString.substring(lastIdx+1);
// lastIdx에 닫는 괄호 위치가 들어 있으므로, 그 다음부터 끝까지.
inputString = first + revStr + last;
// 괄호 이전 글자 + 뒤집힌 괄호 안 글자 + 괄호 뒤 글자
firstIdx = inputString.lastIndexOf("(");
lastIdx = inputString.indexOf(")", firstIdx);
// firstIdx, lastIdx를 다시 주어야 괄호를 계속 찾는다.
}
return inputString;
}
NHN 코딩 테스트에서 비슷한 문제 있었는데... 그때보다 나아진 게 없구먼;;;
'Java' 카테고리의 다른 글
String.valueOf와 Integer.toString (0) | 2020.10.05 |
---|
댓글