C++指针实现输入两个字符串,找两个字符串公共子串
时间: 2024-10-29 14:12:14 浏览: 33
在C++中,可以使用指针来处理字符串并寻找它们的公共子串。这里我们可以使用两个指针,一个指向第一个字符串,另一个指向第二个字符串,同时遍历这两个字符串,比较字符。当找到相同的字符时,我们更新两个指针的位置,直到其中一个字符串结束或者找不到匹配的字符为止。
以下是一个简单的示例程序:
```cpp
#include <iostream>
#include <string>
std::string findCommonSubstring(const std::string& str1, const std::string& str2) {
int len1 = str1.length();
int len2 = str2.length();
// 初始化二维数组存储最长公共前缀长度
int dp[len1 + 1][len2 + 1] = {0};
// 指针i和j分别指向str1和str2
for (int i = 1; i <= len1; i++) {
for (int j = 1; j <= len2; j++) {
if (str1[i - 1] == str2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
else {
dp[i][j] = 0;
}
}
}
// 从dp表中找到最大值,对应的子串就是公共子串
int maxLen = 0;
int endIdx = -1;
for (int i = 0; i <= len1; i++) {
if (maxLen < dp[i][len2]) {
maxLen = dp[i][len2];
endIdx = i;
}
}
// 返回公共子串
return str1.substr(endIdx - maxLen + 1, maxLen);
}
int main() {
std::string str1 = "hello world";
std::string str2 = "world is big";
std::cout << "Common substring: " << findCommonSubstring(str1, str2) << std::endl;
return 0;
}
```
阅读全文