检查字符串包含特定的顺序字符

问题描述:

我用下面的代码尝试检查,如果字符串包含特定字符,但我想以这样在我的代码检查,以检查这个人物这我的代码检查字符串包含特定的顺序字符

string string1= "Amed"; 
string string2= "Anbhsmegfd"; 
std::string x(string1); 
if (x.find_first_not_of(string2) != std::string::npos) 
{ 
    std::cerr << "Error\n"; 
} 

如果字符串包含给字符串1个字符,但我要检查,如果发现顺序方式 这个字符作为字符串2
发现了一个例子

string1 ="Amed"; 
string2= "Aehdkm" 

的字符串1,但我需要的输出将b e error,因为e出现在m之前 我该怎么做?

+0

动态编程会起作用。或者在较小的字符串上递归回溯逐字符。 – twentylemon

+0

实际上string1不在后者的string2中。 – traveh

+0

@traveh更新 – mbugr

会这样的工作吗?

string s1 = "Amed"; 
string s2 = "Aehkm"; 
size_t k = 0; 
for (size_t i = 0; i < s2.size(); ++i) 
    if (s1[k] == s2[i]) { 
     k++; 
     if (k == s1.size()) { 
      cout << "found" << endl; 
      break; 
     } 
    } 
+0

解决一些情况下,如果string1 =“艾哈迈德”和string2 =“ehAmAhmsed”没有找到,但string2包含字符串1的顺序! – mbugr

+0

@AhmedElzeiny我刚试过,它说“发现”。 (每次'k'递增时,您都可以打印'i'来查看会发生什么。) – AlexD

只写code.Here是伪代码,我让你转换到C++

char* s = str2 
foreach (char c in str1) 
    char *find = indexof(s, c) 
    if(!find) 
     error; 
    s = find 

即 - 寻找的第一个字符 - 如果发现指针移动到你发现char和搜索为下一个字符,否则失败