How to Implement strStr() function in C++?
- 时间:2020-09-27 14:36:16
- 分类:网络文摘
- 阅读:124 次
Implement strStr().
Return the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. Example 1:
Input: haystack = “hello”, needle = “ll”
Output: 2Example 2:
Input: haystack = “aaaaa”, needle = “bba”
Output: -1Clarification:
What should we return when needle is an empty string? This is a great question to ask during an interview.
For the purpose of this problem, we will return 0 when needle is an empty string. This is consistent to C’s strstr() and Java’s indexOf().
strStr() implementation in C++
The implementation should consider the corner cases, when the needle is empty, the result should be always 0. The following implementation of strStr() method in C++ has a time complexity O(MN) where M and N are the lengths of the input haystack and needle string.
The outer loop should be from 0 to the length of M-N+1. And the inner loop checks if the substring of haystack matches the needle. This is not the optimial solution as there will be a KMP algorithm which requires a pre-computation.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | class Solution { public: int strStr(string haystack, string needle) { for (int i = 0; i + needle.size() - 1 < haystack.size(); ++ i) { bool ok = true; for (int j = 0; j < needle.size(); ++ j) { if (haystack[i + j] != needle[j]) { ok = false; break; } } if (ok) return i; } return (needle.size() == 0) ? 0 : -1; } }; |
class Solution {
public:
int strStr(string haystack, string needle) {
for (int i = 0; i + needle.size() - 1 < haystack.size(); ++ i) {
bool ok = true;
for (int j = 0; j < needle.size(); ++ j) {
if (haystack[i + j] != needle[j]) {
ok = false;
break;
}
}
if (ok) return i;
}
return (needle.size() == 0) ? 0 : -1;
}
};–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:校园烟酒浅谈作文900字 美丽的小院作文 百年世博,梦圆上海 我爱我美丽的家乡作文 辉煌明天 如果把铁块竖放在水中,那么水面上升多少厘米 A×B×C=300,A×C=100,A×4=C 24点题:给定2、6、9、9四个数 数学题:他们到达A、B两地的中点C地时都会提速20% 一个数的近似值是20万,这个数最大是多少?最小是多少?
- 评论列表
-
- 添加评论