这是一个大水题,为什么要写他呢,因为我用错了一个string的方法,写下来提醒下自己。
string 如果定义了s=“”;那么s就是等于空了,如果想加入值 s+=“1”,如果直接写s[0]=‘1’;就等于没写
#include<bits/stdc++.h>
using namespace std;
map<string ,int>mp;
int main()
{
int n,ans=0;
cin>>n;
string s,s1,s2;
while(n--)
{
cin>>s;
s1="";
for(int i=0;i<s.length();i++)
{
if(s[i]=='u'){s1+="oo";continue;}
if(s[i]=='h'){
int len=s1.length();
len--;
while(s1[len]=='k')
len--;
s2="";
//cout<<s1[len]<<" 12311"<<endl;
for(int j=0;j<=len;j++)
s2+=s1[j];//开始s2[j]=s1[j]错了
s2+='h';
s1=s2;
continue;}
s1+=s[i];
}
// cout<<s1<<endl;
if(mp[s1]==0)ans++,mp[s1]++;
}
cout<<ans<<endl;
return 0;
}