https://leetcode.com/problems/find-the-index-of-the-first-occurrence-in-a-string/

코드설명

문자열(String) 을 활용합니다.

 

첫번째 방법은, String.indexOf를 활용하여 haystack 중 가장 앞에 존재하는 needle 위치를 찾습니다.

두번쨰 방법은, haystack이 needle 길이만큼 substring하여 needle과 비교하여 일치할경우 위치를 반환합니다.

로직은 같습니다.

코드

정답코드1입니다. 

class Solution {
    public int strStr(String haystack, String needle) {
        System.out.print(haystack.indexOf(needle) + 1);       
        return haystack.indexOf(needle);
    }
}

정답코드2입니다.

여기서 범위처리가 헷갈릴 수 있는데 i + nSize - 1 을 각 비교의 끝점으로 생각하면 이해하기 편합니다.

각 비교의 끝점이 hSize보다 작아야만 substring이 올바르게 작동하겠지요.

class Solution {
    public int strStr(String haystack, String needle) {
        int hSize = haystack.length();
        int nSize = needle.length();

        if(hSize < nSize) return -1;

        for(int i=0; i + nSize - 1 < hSize; i++){
            if(haystack.substring(i, i + nSize).equals(needle)){
                return i;
            }
        }   
        return -1;
    }
}

+ Recent posts