Solution 1) 내 풀이
class Solution {
    public int solution(String myString, String pat) {
        int answer = 0;
        int idx = 0;
        
        while((idx = myString.indexOf(pat, idx)) != -1) {
            answer++;
            idx++;
        }
        return answer;
    }
}

 

코드 및 문제 리뷰

myString 문자열에서 pat 문자열이 몇번 등장하는지 찾는 문제이다.

 

위의 내 풀이는 나도 참고한 풀이인데, indexOf를 쓰는 방식이 정말 깔끔하다고 생각해 배워왔다.

while 문의 조건으로 != -1를 뒀고, 이는 indexOf의 특징을 이용한 조건이다.

indexOf로 특정 문자 또는 문자열이 포함되지 않는다면 -1을 반환하기 때문에 그때 까지 돌며 문자 또는 문장을 찾겠다는 의미이다.

 

myString.indexOf(pat, idx)를 해서 pat이 존재한다면 시작 위치가 idx로 들어갈 것이고, 반복문 안에서 idx가 ++ 되기 때문에 자동적으로 다시 while문을 들어갈 땐 그 다음 idx 부터 탐색을 시작한다. 그와 동시에 반복문안에 들어온다면 answer이 카운트 되어 ++ 될 것이고, idx를 모두 돌아 같은 문자 또는 문자열이 존재하지 않는다면 indexOf가 -1를 반환하며 마무리 된다.

 

해당 문제는 다른 풀이들이 꽤 다양한 케이스로 존재하는데, 내가 문자열 문제에 약한것 같아 한번씩 들어가 참고하고 되새겨야겠다.

 

(내 검색어, 참고문제, 문자열 문제)

+ Recent posts