leet code判断字符串是否同构

来源:互联网 发布:如何提高个人魅力 知乎 编辑:程序博客网 时间:2024/06/05 00:40

想的思路比较简单。

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;}


                                             
0 0