比较两个字符串 return c++ 中的等效子字符串
Comparing two strings that return the equivalent substring in c++
我有一个接受两个字符串的函数 subString。我循环遍历我的第一个字符串以生成至少大小 >= 4 的子字符串。我想找到一个存在于我的第二个字符串中的子字符串。例如:
string1: "ABCDE" string2: "XYBCDEFGH"
string1 的子字符串包括:"ABCD"、"ABCDE"、"BCDE"
所以,我想比较生成的子字符串到 string2 和 return "BCDE"
我对如何比较这两个字符串感到困惑。我查看了 STL 字符串库 (https://www.cplusplus.com/reference/string/string/),但在寻找解决此问题的正确方法时遇到了困难。
#include <iostream>
#include <string>
using namespace std;
void subString(string s1, string s2){
int n = 4;
int strLength = s1.length();
string firstString;
for (int i = 0; i < strLength; i++){
for(int j = 1; j <= strLength - i; j++){
if (s1.substr(i,j).length() >= n){
firstString = s1.substr(i,j);
cout << firstString << endl;
}
}
}
}
int main()
{
string s1;
string s2;
cin >> s1;
cin >> s2;
subString(s1, s2);
}
你可以
- Return 一个子串向量。
- 然后遍历向量并使用 find 在 s2 字符串中搜索
方法。
参见下面的代码示例。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> subString(string s1, string s2){
int n = 4;
int strLength = s1.length();
string firstString;
vector<string> substrings;
for (int i = 0; i < strLength; i++){
for(int j = 1; j <= strLength - i; j++){
if (s1.substr(i,j).length() >= n){
firstString = s1.substr(i,j);
substrings.push_back(firstString);
}
}
}
return substrings;
}
int main()
{
string s1 = "ABCDE";
string s2 = "XYBCDEFGH";
for (auto value : subString(s1, s2))
{
if (s2.find(value) != string::npos)
cout << "found " << value << endl;
}
}
这段代码的输出
found BCDE
我有一个接受两个字符串的函数 subString。我循环遍历我的第一个字符串以生成至少大小 >= 4 的子字符串。我想找到一个存在于我的第二个字符串中的子字符串。例如:
string1: "ABCDE" string2: "XYBCDEFGH"
string1 的子字符串包括:"ABCD"、"ABCDE"、"BCDE"
所以,我想比较生成的子字符串到 string2 和 return "BCDE"
我对如何比较这两个字符串感到困惑。我查看了 STL 字符串库 (https://www.cplusplus.com/reference/string/string/),但在寻找解决此问题的正确方法时遇到了困难。
#include <iostream>
#include <string>
using namespace std;
void subString(string s1, string s2){
int n = 4;
int strLength = s1.length();
string firstString;
for (int i = 0; i < strLength; i++){
for(int j = 1; j <= strLength - i; j++){
if (s1.substr(i,j).length() >= n){
firstString = s1.substr(i,j);
cout << firstString << endl;
}
}
}
}
int main()
{
string s1;
string s2;
cin >> s1;
cin >> s2;
subString(s1, s2);
}
你可以
- Return 一个子串向量。
- 然后遍历向量并使用 find 在 s2 字符串中搜索 方法。
参见下面的代码示例。
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> subString(string s1, string s2){
int n = 4;
int strLength = s1.length();
string firstString;
vector<string> substrings;
for (int i = 0; i < strLength; i++){
for(int j = 1; j <= strLength - i; j++){
if (s1.substr(i,j).length() >= n){
firstString = s1.substr(i,j);
substrings.push_back(firstString);
}
}
}
return substrings;
}
int main()
{
string s1 = "ABCDE";
string s2 = "XYBCDEFGH";
for (auto value : subString(s1, s2))
{
if (s2.find(value) != string::npos)
cout << "found " << value << endl;
}
}
这段代码的输出
found BCDE