반응형
문제
Find the Index of the First Occurrence in a String - LeetCode
문제 해결 방법
- 스트링의 indexOf를 사용하면 한번에 해결이 가능합니다.
- 만약 indexOf를 사용하면 안된다면, substring을 이용해서 로직을 짤수 있습니다.
- substring을 이용하여, haystack의 문자열을 needle의 길이만큼 자른다.
- 자른 문자열을 비교한다.
- 자를 문자열의 인덱스를 한칸 옮긴다.
- 이를 반복한다. 만약 자른 문자열의 길이가 needle의 길이보다 짧다면, needle문자열은 존재하지 않으므로 -1을 리턴한다
- 즉, 이문제는 문자열을 자르고 검색할수 있는 능력이 있는지 묻는 문제입니다.
Github Link
https://github.com/eunhanlee/LeetCode_28_FindtheIndexoftheFirstOccurrenceinaString_Solution.git
시간복잡도: O(nm), 공간복잡도: O(1)
class Solution {
public int strStr(String haystack, String needle) {
// indexOf() 메서드는 주어진 문자열(haystack) 내에서 지정된 부분 문자열(needle)의 첫 번째 발생 위치를 찾습니다.
// 찾으면 부분 문자열의 첫 번째 문자의 인덱스를 반환하고, 찾지 못하면 -1을 반환합니다.
return haystack.indexOf(needle);
}
}
시간복잡도: O(nm), 공간복잡도: O(1)
class Solution {
/**
* 주어진 문자열(haystack)에서 지정된 부분 문자열(needle)의 첫 번째 발생 위치를 찾습니다.
*
* @param haystack 검색 대상 문자열
* @param needle 검색할 부분 문자열
* @return 부분 문자열이 발견되면 첫 번째 문자의 인덱스,
* 발견되지 않으면 -1을 반환합니다.
*/
public int strStr(String haystack, String needle) {
int end = needle.length(); // 부분 문자열 비교의 끝 인덱스
int start = 0; // 부분 문자열 비교의 시작 인덱스
while (end <= haystack.length()) {
if (haystack.substring(start, end).equals(needle)) {
// 시작부터 끝까지의 부분 문자열이 needle과 일치하면
// 시작 인덱스를 반환하여 첫 번째 발생 위치로 간주합니다.
return start;
}
start++; // 시작 인덱스를 오른쪽으로 이동합니다.
end++; // 끝 인덱스를 오른쪽으로 이동합니다.
}
// 부분 문자열이 발견되지 않으면 -1을 반환합니다.
return -1;
}
}
- 시간 복잡도에서 n은 haystack의 길이이고, m은 needle의 길이입니다.
반응형
'old > Algorithm Solving' 카테고리의 다른 글
LeetCode 341. Flatten Nested List Iterator 자바 문제 풀이 (0) | 2023.07.18 |
---|---|
LeetCode 171. Excel Sheet Column Number 자바 문제 풀이 (0) | 2023.07.14 |
LeetCode 1920. Build Array from Permutation 자바 문제 풀이 (0) | 2023.07.12 |
LeetCode 62. Unique Paths 자바 문제 풀이 (0) | 2023.07.11 |
LeetCode 2114. Maximum Number of Words Found in Sentences 자바 문제 풀이 (0) | 2023.07.09 |