这里必须找到2个字符串中字符的序列号。 第一个字符串是" stackoverflow" 第二个字符串是用户输入,其中包含字符串-1或者不包含字符的子序列。
即 st d ac hfd kover r flo o w 它包含string1数据作为子序列字符,然后输出应显示 YES
即," stackoverway"它不包含string1数据作为子序列字符然后输出应显示否
这是我的代码..
#include <bits/stdc++.h>
#include<iostream>
#include<cstring>
using namespace std;
bool SubSeq(char str1[], char str2[], int m, int n)
{
if (m == 0)
return true;
if (n == 0)
return false;
if (str1[m-1] == str2[n-1])
return SubSeq(str1, str2, m-1, n-1);
return SubSeq(str1, str2, m, n-1);
}
int main()
{
int q;
cin >> q;
for(int a0 = 0; a0 < q; a0++)
{
char str1[] = "stackoverflow";
int m = strlen(str1);
char str2[] = "";
cin >> str2;
int n = strlen(str2);
SubSeq(str1, str2, m, n) ? cout << "YES\n" : cout << "NO\n";
}
return 0;
}
在上面的代码中,我得到如下输出..
YES
NO
NO
NO
NO
NO
NO
NO .......(truncated)
我不知道为什么这个 NO 发生了这么多次。任何人都可以告诉我,我做错了一步......
提前致谢
卡塔斯
答案 0 :(得分:1)
您将str2
声明为空,然后尝试将输入存储到其中。使用std::string
char str1[] = "stackoverflow";
int m = strlen(str1);
char str2[] = ""; //Notice the size of str2
cin >> str2;
您也可以按照以下方法
继续搜索to_be_searched
中search_here
的第一个字符。当发现在i
位置说话时,从i+1
位置继续{{1}的第二个字符和儿子一起。
to_be_searched