算法面試題一

輸入兩個字符串,比如“abbcddddbcc”,“abc”,輸出第二個字符串在第一個字符串中的連接次序:

如:


代碼如下,遞歸實現:


void findlink(char *begin,char *str1,char *str2,int *index,int num1,int num2,int num3){
	if(num3==num2){
		for(int k=0;k<num3;k++)
			cout<<index[k-3]<<" ";
		cout<<endl;
		return;
	}
	int str1_length = strlen(str1);
	int str2_length = strlen(str2);
	int num = num3;
  	for(int i=0;i<str1_length;i++){
		if(*(str1+i)==*str2){
			*index = str1+i-begin;
			findlink(begin,str1+i+1,str2+1,index+1,num1,num2,num+1);	
		}
	}
}


int main(int argc, char* argv[])
{ 
	char *str1="abbcddddbcc";
	char *str2="abc";
	int index[3];
	findlink(str1,str1,str2,&index[0],strlen(str1),strlen(str2),0);
	getchar();
	return 0;
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章