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;
}
}