#include<iostream>
#include<string>
using std::string;
int main()
{
using namespace std;
int n;
cin>>n;
cin.get();
int k=1;
string s[n];
int x;
int y;
int z;
for(int i=0;i<n;i++)
{
getline(cin,s[i]);}
for(int i=0;i<n;i++)
{
x=s[i].find("@");
y=s[i].find(".");
while((y!=string::npos)&&(y<x))
{
s[i].erase(y,1);
y=s[i].find(".",y+1);
}
z=s[i].find("+");
if((z<x)&&(z!=string::npos))
{
s[i].erase(z,x-z);}
if(i>0)
{
for(int j=0;j<i;j++)
{
if(s[i]==s[j])
{k-=1;
break;}
}
}
k+=1;
}
cout<<k<<endl;
return 0;
}
这个为什么erase越界了?
我就是想把一个字符串@前面的 . 删除,再把@前面的+和@之间的部分删除
一共输入n个字符串,然后经过相同的处理,然后输出处理后不同字符串的个数
GCT1015
相关分类