两个字符串 char* a, char* b,输出b在a中的位置次序.
2014-09-14 01:22
183 查看
<span style="font-size:18px;">/* 两个字符串 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 这个问题和八皇后问题类似,需要用到递归回溯方法。 当检测完字符串b中的c字符时要回溯到上一个状态再继续寻找匹配的位置。 */ #include <iostream> #include <string> #include <list> using namespace std; ///*回溯函数,递归寻找匹配的位置*/ void abstring(string &a,int ai,string &b,int bi,list<int> l) { //如果字符串b已经遍历结束,则打印list链表内的数值 if(bi == b.length()) { for( list<int>::iterator it = l.begin(); it != l.end(); ++it) { cout<<*it; } cout<<endl; } else { //遍历字符串a,寻找与字符串b匹配的元素位置 for(int i = ai; i < a.length(); ++i) { //找到匹配的字符 if(a[i] == b[bi]) { //将字符的位置加入链表 l.push_back(i); //继续寻找下一个匹配字符的位置 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(as,0,bs,0,l); } int main() { output_position("abdbcabc","abc"); return 0; }</span>
相关文章推荐
- 两个字符串 char* a, char* b,输出b在a中的位置次序。
- 两个字符串 char* a, char* b,输出b在a中的位置次序。
- 两个字符串 char* a, char* b,输出b在a中的位置次序
- 《程序员面试宝典》:输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序,即输出125,126,145,146
- C语言:从键盘输入两个字符串,输出第一个字符串在第二个字符串中的位置
- 输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序(递归方法)
- 输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序(递归方法)
- 将两个字符串或一个字符串与数组传入一个,输出字符串中需要的字符位置
- 程序员面试宝典之输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序,即输出125,126,145,146
- 输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序(递归方法)
- 编写函数fun(char *s),其功能是:把字符串中所有字符前移一个位置,串中的第1个字符移到最后。 例如,若输入字符串为:ABC123xyz ,则应输出字符串: BC123xyzA 。
- 输入两个字符串,比如abdbcc和abc,输出第二个字符串在第一个字符串中的连接次序
- 输入两个字符串,输出第二个字符串在第一个字符串中的连接次序
- 输入两个字符串,比如abdcc和abc,输出第二个字符串在第一个字符串中的连接次序
- 程序员面试宝典 8.2 典型递归问题: 面试例题1: 输入两个字符串,比如 abdbcc 和 abc, 输出第二个字符串在第一个字符串中的连接次序。即输出 125, 126, 145, 146.
- 输入两个字符串,比如abdbcc和abc,把abc在abdbcc中的连接次序输出
- 【程序员面试宝典】递归之两个字符串连接次序问题(P83)
- 给定两个字符串,求相同char
- 嘿牛程序员_成都传智博客_讨论字符串中字符出现的次数(续一:通过数组实现按次序输出)
- 比较两个字符串是否相等,相等输出MATCH,否则NOMATCH