본문 바로가기
Java

indexOf

by proudofch 2021. 1. 22.

"the first occurrence" 주의

첫 번째로 등장하는 인덱스를 리턴하는 것.

그러니까 같은 문자가 두 번 등장해도 첫 번째 인덱스만 반환

 

마지막 인덱스 찾으려고 했는데 lastIndexOf라는 함수가 있었음... 개삽질했넹....ㅎ...

 

CodeSignal 문제를 풀려고 이 난리였다.

reverseInParentheses라는 문제고, 유튜브에서 코드 찾고 공부했다.

조슈아님 고마워여......

youtu.be/3k8SCh3dUAw

 

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

댓글