#include "stdafx.h"
#include <iostream>
using namespace std;
#include "string.h"
void printPos(char *p_str, char *s_str, int *print_pos, int p_len, int s_len, int print_pos_num,
int p_start_num , int s_start_num)
{
int pStartnum = p_start_num;
int sStartnum = s_start_num;
int printPosnum = print_pos_num;
if (printPosnum == s_len)
{
for (int i = 0; i < s_len; i++)
{
cout<<*(print_pos + i);
cout<<"";
}
cout<<endl;
}
for (int i = pStartnum; i< p_len; i++)
{
for (int j = sStartnum; j < s_len; j++)
{
if (*(p_str+i) == *(s_str+j))
{
print_pos[printPosnum] = i +1;
int pi = i;
int pj = j;
printPos(p_str, s_str, print_pos, p_len, s_len, printPosnum+ 1, pi + 1, pj+ 1);//if equal, point back one
}
}
}
}
void ConnectSequence(char *p_str, char *s_str)
{
int p_len = strlen((const char*)p_str);
int s_len = strlen((const char*)s_str);//求长度
int *print_arr = new int[s_len];//长度数组
unsigned int print_arr_num = 0;
if (NULL == p_str && NULL == s_str)
{
cout<<"string error"<<endl;
return;
}
if (NULL == print_arr)
{
cout<<"allocate error"<<endl;
return;
}
printPos(p_str, s_str, print_arr, p_len, s_len, 0,0,0);
}
int _tmain(int argc, _TCHAR* argv[])
{
char ParString[] = "ababcca";
char SonString[] = "abc";
ConnectSequence(ParString, SonString);
return 0;
}
输出结果是:
输出第二个字符串在第一个字符串中的次序
最新推荐文章于 2021-10-30 22:39:14 发布