2020-12-15 LeetCode 문제풀이 implement strStr()
설명
- 문자열 haystack과 needle이 파라미터로 입력받는다. haystack에서 needle이 포함되어있는 최초의 index를 리턴해준다. Java String의 indexOf()와 유사한 기능이다.
public class ImplementStr {
public static int strStr(String haystack, String needle) {
if (needle.equals("")) return 0;
if (haystack.equals("")) return -1;
for (int i = 0; i < haystack.length(); i++) {
if (i + needle.length() > haystack.length()) break;
for (int j = 0; j < needle.length(); j++) {
if (haystack.charAt(i+j) != needle.charAt(j)) break;
if (j == needle.length()-1)
return i;
}
}
return -1;
}
public static void main(String[] args) {
System.out.println(strStr("hello", "ll"));
System.out.println(strStr("aaaaa", "bba"));
System.out.println(strStr("", ""));
System.out.println(strStr("", "a")); // expected -1;
System.out.println(strStr("aaa", "a")); // expected 0;
System.out.println(strStr("aaa", "aaaa")); // expected -1
System.out.println(strStr("a", "a")); // expected 0
}
}
설명
- 만약 needle이 ““라면 0을 리턴, haystack이 ““라면 -1을 리턴한다.
- haystack이 “hello”이고 needle이 “ll”라고 할때, haystack을 0부터 순차적으로 순회한다. haystack의 i번째 값이 needle의 값과 같다면 haystack.charAt(i+j)와 needle.charAt(j)가 계속해서 같을것이다. 중간에 다르다면 haystack.charAt(i+j) != needle.charAt(j)부분에서 break;로 걸리고 계속해서 같다면 j가 nedle.length-1번 인덱스까지 간다.
- 만약 j가 needle.length-1까지 간다면 포함되므로 처음 인덱스의 시작인 i를 리턴해주고 아니면 -1을 리턴한다.
Written on December 15, 2020