18. Implement strStr()
02 Jul 2020 | Daily Algorithms
class Solution {
public:
int strStr(string haystack, string needle) {
int m = haystack.size(), n = needle.size();
for (int i = 0; i <= m - n; i++) {
int j = 0;
for (; j < n; j++) {
if (haystack[i + j] != needle[j]) {
break;
}
}
if (j == n) {
return i;
}
}
return -1;
}
};
- 하나하나 걸쳐서 하는 것이다
- 즉 i는 기준점(pivot)이 되고 needle 크기만큼 움직인다.(j) 그리고 그 needle의 엘레먼트와 해당 지준점으로 부터 needle size값 만큼 traversal하게 되는 j 값이 일치할떄 second for loop가 break 없이 종료가 되고 j 값은 needle.size() 만큼의 값이 됨으로, j==needle.size() 조건을 만족을 한다면 needle의 단어를 haystack 찾음으로 해당 기준점 index i를 리턴한다
-
그렇지 않고 만약 기준점 i로 부터 needle size값 만큼 traversal하게 될때 needle와 엘레먼트 값과 haystack 기준점으로부터 시작하는 needle size 만큼의 값이 일치하지 않다면 break를 하여 second for loop를 종료하고, 이떄 j의 값은 second for loop가 complete 되지 않은 상태에서 종료하였기 때문에 needle.size()값과 최종 traversal한 j의 값이 일치하지 않으므로 first for loop를 다시 반복한다.
- 설명 : http://blog.naver.com/PostView.nhn?blogId=kks227&logNo=220917078260
class Solution {
public:
int strStr(string haystack, string needle) {
int m = haystack.size(), n = needle.size();
for (int i = 0; i <= m - n; i++) {
int j = 0;
for (; j < n; j++) {
if (haystack[i + j] != needle[j]) {
break;
}
}
if (j == n) {
return i;
}
}
return -1;
}
};
- 하나하나 걸쳐서 하는 것이다
- 즉 i는 기준점(pivot)이 되고 needle 크기만큼 움직인다.(j) 그리고 그 needle의 엘레먼트와 해당 지준점으로 부터 needle size값 만큼 traversal하게 되는 j 값이 일치할떄 second for loop가 break 없이 종료가 되고 j 값은 needle.size() 만큼의 값이 됨으로, j==needle.size() 조건을 만족을 한다면 needle의 단어를 haystack 찾음으로 해당 기준점 index i를 리턴한다
-
그렇지 않고 만약 기준점 i로 부터 needle size값 만큼 traversal하게 될때 needle와 엘레먼트 값과 haystack 기준점으로부터 시작하는 needle size 만큼의 값이 일치하지 않다면 break를 하여 second for loop를 종료하고, 이떄 j의 값은 second for loop가 complete 되지 않은 상태에서 종료하였기 때문에 needle.size()값과 최종 traversal한 j의 값이 일치하지 않으므로 first for loop를 다시 반복한다.
- 설명 : http://blog.naver.com/PostView.nhn?blogId=kks227&logNo=220917078260
Comments