C++ 字符子序列

C++ 字符子序列,c++,C++,这里必须找到两个字符串中的字符序列。。 第一个字符串是“stackoverflow” 第二个字符串是用户输入,可能包含也可能不包含字符串-1作为字符子序列 i、 例如,stdachfdkoverrfloow它包含string1数据作为子序列字符,然后输出应显示YES i、 例如,“stackoverway”不包含作为子序列字符的string1数据,则输出应显示NO 这是我的密码 #include <bits/stdc++.h> #include<iostream> #in

这里必须找到两个字符串中的字符序列。。 第一个字符串是“stackoverflow” 第二个字符串是用户输入,可能包含也可能不包含字符串-1作为字符子序列

i、 例如,stdachfdkoverrfloow它包含string1数据作为子序列字符,然后输出应显示YES

i、 例如,“stackoverway”不包含作为子序列字符的string1数据,则输出应显示NO

这是我的密码

#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;
}
我不知道为什么这种情况会发生这么多次。有人能告诉我哪里做错了一步吗

提前谢谢


Venkatesh

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

char str1[] = "stackoverflow";
int m = strlen(str1);
char str2[] = ""; //Notice the size of str2
cin >> str2; 
您也可以遵循以下方法

继续在
search\u here
中搜索要搜索的
的第一个字符。当在
i
位置找到时,从
i+1
位置继续搜索要搜索的
的第二个字符,然后继续搜索

bool check(string to_be_Searched,string search_here)
{
    for(int i=0,j=0;j<to_be_searched.length() && i<search_here.length();i++)
    {
       if(to_be_Searched[j]==search_here[i])
          j++;
    }
    return j==to_be_searched.length();
 }
bool检查(要搜索的字符串,此处搜索字符串)
{

对于(int i=0,j=0;j1)首先,使用std::string而不是(只读)字符数组。解决此类问题的正确工具是调试器。在询问堆栈溢出之前,您应该逐行检查代码。有关更多帮助,请阅读。至少,您应该[编辑]您的问题包括一个重现您的问题的示例,以及您在调试器中所做的观察。您的输入是什么?
bool check(string to_be_Searched,string search_here)
{
    for(int i=0,j=0;j<to_be_searched.length() && i<search_here.length();i++)
    {
       if(to_be_Searched[j]==search_here[i])
          j++;
    }
    return j==to_be_searched.length();
 }