想的思路比较简单。
1.将两个字符串转化为字符数组。
2.建立两个数组表示字符串的结构,相当于总是从1开始的表。
3.设置一个various变量记录编号。字符数组从头开始判断,如果在当前位置之前存在相等的字符,当前位置的编号等于在此之前相同字符的编号。如果不存在,various+=1,并且当前字符的编号等于various。
4.判断两个数组是否相等。
<pre name="code" class="cpp">#include <iostream>
using namespace std;
#include <string>
int code(int * trans_list,char * from_str,int pos,int & var)
{
int result_num=0;
int i=0;
for(i=0;i<pos;i++)
{
if(from_str[i]==from_str[pos])
{
result_num=trans_list[i];
return result_num;
}
}
var+=1;
result_num=var;
return result_num;
}
bool check(int * array1,int * array2,int len)
{
for(int i=0;i<len;i++)
{
if(array1[i]!=array2[i])
return false;
}
return true;
}
int main()
{
string s;
string t;
cout<<"please input string s:"<<endl;
cin>>s;
cout<<"please input string t:"<<endl;
cin>>t;
if(s.length()!=t.length())
{
cout<<"the lengths are different."<<endl;
system("pause");
return 0;
}
else
{
char * str1;
char * str2;
str1 = new char[s.length()];
strncpy(str1,s.c_str(),s.length());
str2 = new char[s.length()];
strncpy(str2,t.c_str(),t.length());
int * str11=new int[s.length()];
int * str22=new int[s.length()];
int various1=0;
int various2=0;
for(int i=0;i<s.length();i++)
{
str11[i]=code(str11,str1,i,various1);
str22[i]=code(str22,str2,i,various2);
}
int IsSame=check(str11,str22,s.length());
cout<<IsSame<<endl;
cout<<"the struct of string s:"<<endl;
for(int i=0;i<s.length();i++)
cout<<str11[i];
cout<<endl;
cout<<"the struct of string t:"<<endl;
for(int i=0;i<t.length();i++)
cout<<str22[i];
cout<<endl;
}
system("pause");
return 0;
}