自己的思路
1)将字符串中的字母转换成数字,即将字符串转成数字字符串O(n)
2)对数字字符串进行排序,可用快速排序,达到O(nlgn)的级别
3)在已经排好序的数字字符串中找出有重复的并输出,若没有重复的则输出"No duplicates"。复杂度O(n)
//下面是对第3步的一个模拟,输入的数字和题目的要求并非一致,但思路是这样。
//并且是O(n)级别
main()
{
int a[14]={2,2,55,55,55,90,90,104,104,104,104,234,234,235};
int i=0;
int b[14][2]={0};//记录有重复的数字,并且记录它重复的次数
int count=1;
int s=0;//判断是否有重复的标志
for(;i<14;i++)
{
if(a[i+1]==a[i])++count;
else
{
if(count>1)
{
b[i][0]=a[i];//记录有重复的数字
b[i][1]=count;//记录它重复的次数
// cout<<a[i]<<" is "<<count<<endl;
}
count=1;
}
}
for(i=0;i<14;i++)
{
if((s+=b[i][1])<=1)continue;
else
{
if(b[i][1]>1)
cout<<b[i][0]<<" is "<<b[i][1]<<endl;
}
}
if(s==0)cout<<"No duplicates!"<<endl;
}