字符的子序列

时间:2017-02-11 05:53:25

标签: c++

这里必须找到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 发生了这么多次。任何人都可以告诉我,我做错了一步......

提前致谢

卡塔斯

1 个答案:

答案 0 :(得分:1)

您将str2声明为空,然后尝试将输入存储到其中。使用std::string

char str1[] = "stackoverflow";
int m = strlen(str1);
char str2[] = ""; //Notice the size of str2
cin >> str2; 

您也可以按照以下方法

继续搜索to_be_searchedsearch_here的第一个字符。当发现在i位置说话时,从i+1位置继续{{1}的第二个字符和儿子一起。

to_be_searched