创建串s定义串的数据结构。串的基本操作实现求子串t在组串s中第一次出现的位置。求同x的下标pos子串第一次出现的位置成功返回位置序号不成功返回-1。
时间: 2024-12-19 13:22:01 浏览: 16
创建字符串数据结构通常包括一个字符数组和两个指针,分别表示起始位置和结束位置。对于字符串`S`,我们可以定义它为`char[] s;`,其中`s`是一个字符数组存储了所有的字符。
为了实现查找子串`t`在主串`s`中的首次出现位置,可以采用双指针策略或者遍历的方式。下面是一个简单的C++示例:
```cpp
#include <string>
using namespace std;
int findSubstringPos(string s, string t) {
if (t.length() > s.length()) return -1; // 如果子串长度大于原串,不可能找到
int pos = 0; // 初始化搜索起始位置
for (size_t i = 0; i <= s.length() - t.length(); ++i) { // 遍历s,每次移动步长为t.length()
if (s.substr(i, t.length()) == t) { // 比较子串是否匹配
return i; // 匹配则返回起始位置
}
}
return -1; // 子串未在s中找到,返回-1
}
// 示例用法
int main() {
string s = "Hello, World!";
string t = "World";
int pos = findSubstringPos(s, t);
if (pos != -1)
cout << "子串 't' 在 's' 中的第一个出现位置是: " << pos << endl;
else
cout << "子串 't' 在 's' 中未找到" << endl;
return 0;
}
```
在这个例子中,`findSubstringPos`函数会返回子串`t`在主串`s`中的第一个出现位置,如果找不到就返回-1。
阅读全文