自己的思路
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;
}