《软件工程师面试宝典》求取第二个字符串在第一个字符串中的连接次序-递归算法
《程序员面试宝典》求取第二个字符串在第一个字符串中的连接次序---递归算法

// test_max.cpp : 定义控制台应用程序的入口点。 #include "stdafx.h" #include <iostream> using namespace std; int* s; void printIndex(string str1,string str2,int* s) { int i=0; for(i=0;i<str2.length();i++) { while(s[i]<str1.length() && str1.at(s[i])!=str2.at(i) ) //注意判断的顺序 { s[i]++; } } for(i=0;i<str2.length();i++) { if(s[i]==str1.length()) { return; } } for(i=0;i<str2.length();i++) { printf("%d ",s[i]); } printf("\n"); for(i=str2.length()-1;i>=0;i--) { for(int j=i+1;j<str2.length();j++) { s[j]=0; } s[i]++; if(s[i]<str1.length()) { printIndex(str1,str2,s); } else { return; } } return; } int main() { string str1="abdbcc"; string str2="abcd"; s=(int*)malloc(str2.length()*sizeof(int)); memset(s,0,str2.length()*sizeof(int)); printIndex(str1,str2,s); system("pause"); return 0; }