编写算法,求所有包含字符串S中而不包含字符串T中的字符串,构成的新串r以及r中每一个字符在S中第一次出现的位置

来源:互联网 发布:微博如何绑定淘宝 编辑:程序博客网 时间:2024/05/29 14:17
/*编写算法,求所有包含字符串S中而不包含字符串T中的字符串(S中重复的字符只选一个)*//*构成的新串r以及r中每一个字符在S中第一次出现的位置*/#include<iostream>#include<string>using namespace std;bool compare_T(string S,string T,int Location);bool compare_R(string S,string R,int Location,int length);void print(string R,int * num,int length);void statistics_print(string S,char * R,string T,int * num){    int length_S=S.length();    int count=0;    int length=0;    for(int i=0;i<length_S;i++)    {         if(compare_R(S,R,i,length) && compare_T(S,T,i) )        {            R[length]=S[i];            num[length]=i;            length++;        }        else        {            continue;        }    }    string r(R,length);   //将字符数组R转为字符串r    cout<<"新串r为:"<<r<<endl;    print(R,num,length);}bool compare_T(string S,string T,int Location) //与串T中的元素比较{    int i;    int length_T=T.length();    for(i=0;i<length_T;i++)    {        if(S[Location]==T[i])        {            return false;            break;        }        else        {            continue;        }    }    if(i==length_T)    {        return true;    }}bool compare_R(string S,string R,int Location,int length)  //与新串R中的元素比较{    int i;    for(i=0;i<length;i++)    {        if(S[Location]==R[i])        {            return false;            break;        }        else        {            continue;        }    }    if(i==length)    {        return true;    }}void print(string R,int * num,int length){    for(int i=0;i<length;i++)    {        cout<<"元素:"<<R[i]<<" ,在串S中第一次出现的位置为:"<<num[i]<<endl;    }}int main(){    string S="ABBCDEFGHF";    string T="EGA";    char R[20];    int num[20];    statistics_print(S,R,T,num);    return 0;}

这里写图片描述

0 0
原创粉丝点击