c++代码输入两个字符串string1和string2,判断string2是否为string1的子串,如果是,返回string2在string1中第一次出现的位置
时间: 2024-03-24 19:17:37 浏览: 79
以下是 C++ 代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str1, str2;
cout << "请输入字符串1: ";
cin >> str1;
cout << "请输入字符串2: ";
cin >> str2;
if (str1.find(str2) != string::npos)
{
int pos = str1.find(str2);
cout << "字符串2是字符串1的子串,第一次出现的位置为: " << pos << endl;
}
else
{
cout << "字符串2不是字符串1的子串" << endl;
}
return 0;
}
```
输入两个字符串,其中 `str1.find(str2)` 函数可以查找字符串2在字符串1中第一次出现的位置,如果返回的是 `string::npos`,表示字符串2不是字符串1的子串。
相关问题
C++实现输入两个字符串,找两个字符串公共子串
在C++中,我们可以使用动态规划的方法来找到两个字符串之间的最长公共子串。这里是一个简单的实现步骤:
```cpp
#include <iostream>
#include <string>
#include <vector>
std::string longestCommonSubstring(const std::string& s1, const std::string& s2) {
int m = s1.length();
int n = s2.length();
// 创建一个二维数组来存储中间结果
std::vector<std::vector<int>> dp(m + 1, std::vector<int>(n + 1, 0));
int maxLength = 0;
int endPos = -1;
// 遍历s1和s2
for (int i = 1; i <= m; ++i) {
for (int j = 1; j <= n; ++j) {
if (s1[i - 1] == s2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1; // 如果字符匹配,长度加一
if (dp[i][j] > maxLength) { // 更新最长公共子串的信息
maxLength = dp[i][j];
endPos = i - 1; // 当前结束位置
}
}
}
}
// 根据endPos回溯构建最长公共子串
std::string result(endPos - maxLength + 1, ' ');
s1.copy(result.begin(), endPos + 1, endPos + 1 - maxLength);
return result;
}
int main() {
std::string str1 = "hello";
std::string str2 = "worldhello";
std::cout << "Longest common substring is: " << longestCommonSubstring(str1, str2) << std::endl;
return 0;
}
```
在这个程序中,我们首先初始化一个动态规划矩阵`dp`,然后通过双层循环比较两个字符串的每个字符。如果字符相同,就将上一行和上一列的值加一,并检查是否更新了当前找到的最大公共子串的长度。最后,返回最长公共子串。
c++ 输入任意两个字符串S1和S2,请判断S2是否是S1的子串,是输出YES,不是输出NO。
好的,这是一个简单的字符串匹配问题,可以使用C++的string类和string的find函数来实现。以下是示例代码:
```c++
#include <iostream>
#include <string>
using namespace std;
int main() {
string s1, s2;
getline(cin, s1); // 输入第一个字符串
getline(cin, s2); // 输入第二个字符串
if (s1.find(s2) != string::npos) { // 如果s2是s1的子串
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
```
在上面的代码中,我们首先使用getline函数分别输入两个字符串s1和s2,然后使用string的find函数来查找s2在s1中的位置,如果返回值不为string::npos,说明s2是s1的子串,输出"YES",否则输出"NO"。
阅读全文