在字符串中查找子串c++
时间: 2023-09-05 08:13:19 浏览: 51
您好!要在字符串s中查找子串c,可以使用以下算法:
1. 遍历字符串s,从第一个字符开始,一直到第 (len(s) - len(c) + 1) 个字符,其中 len(s) 和 len(c) 分别表示字符串 s 和子串 c 的长度。
2. 对于每个字符 i,判断 s[i:i+len(c)] 是否等于 c。如果相等,则找到了子串,返回子串的起始位置 i。
3. 如果遍历完整个字符串 s 后仍未找到子串 c,则表示子串不存在,返回 -1。
下面是 Python 代码实现:
```python
def find_substring(s, c):
for i in range(len(s) - len(c) + 1):
if s[i:i+len(c)] == c:
return i
return -1
```
希望能对您有所帮助!
相关问题
c++查找一个字符串中的子串
在 C++ 中,可以使用标准库中的字符串查找函数来查找一个字符串中的子串。以下是一种常用的方法:
```cpp
#include <iostream>
#include <string>
int main() {
std::string str = "Hello, World!";
std::string subStr = "World";
// 使用 find 函数查找子串的位置
size_t found = str.find(subStr);
if (found != std::string::npos) {
std::cout << "子串 '" << subStr << "' 在字符串中的位置为 " << found << std::endl;
} else {
std::cout << "未找到子串 '" << subStr << "'" << std::endl;
}
return 0;
}
```
在上面的示例代码中,我们使用了 `std::string` 类型的 `find` 函数来查找子串的位置。如果找到了子串,则返回子串在字符串中的起始位置;如果未找到子串,则返回 `std::string::npos`。根据返回值,我们可以判断是否找到了子串,并输出相应的结果。
运行上述代码,输出将为:
```
子串 'World' 在字符串中的位置为 7
```
这表示子串 "World" 在字符串 "Hello, World!" 中的起始位置为 7。
c++ 字符串查找子串
以下是C++中字符串查找子串的例子:
```cpp
#include <iostream>
#include <string>
using namespace std;
int main() {
string a = "abcdefghigklmn";
string b = "def";
string c = "123";
string::size_type idx;
idx = a.find(b); // 在a中查找b
if (idx == string::npos) // 不存在
cout << "not found\n";
else // 存在
cout << "found\n";
return 0;
}
```
该程序中,使用了string类的find()函数来查找子串。如果子串存在,则返回子串在原字符串中的起始位置;如果不存在,则返回string::npos。在该程序中,我们定义了三个字符串a、b、c,其中a为原字符串,b为要查找的子串,c为一个不存在于a中的字符串。程序首先在a中查找b,如果存在,则输出“found”;如果不存在,则输出“not found”。