C++笔试题深度分析 第二波 下

来源:互联网 发布:系统程序员保密 编辑:程序博客网 时间:2024/05/24 01:42

11. 两个字符串 char* a, char* b,输出 b 在 a 中的位置次序。
void output_postion(const char* a, const char* b);
如:a = "abdbcc" b = "abc"
b 在 a 中的位置次序为
014
015
034
035

 

解释:

#include <iostream>#include <string>#include <list>using namespace std; void abstring(string a, int ai, string b, int bi, list<int>& l){if(bi == b.length()){for(list<int>::iterator it = l.begin(); it!= l.end();it++){cout<<*it;}cout<<endl;}else{for(int i = ai; i < a.length(); i++){if(a[i] == b[bi]){l.push_back(i);//如果相等,把序号加入到链表l abstring(a,i+1,b,bi+1,l);//递归 l.pop_back();//回溯 }}}}void output_position(const char* a, const char* b){string as = a;string bs = b;list<int> l;//用来保存 相等的序号 abstring(a,0,b,0,l);}int main(int argc, char** argv) {char* a = "abdbcc";char* b = "abc";output_position(a,b);return 0;}


 

0 0