题目
给定原始字符串,根据字符串内每个字符出现的次数,按照ASCII码递增顺序重新调整输出。
代码
#include <iostream>
#include <string.h>
using namespace std;
int showTimes(char c,string s)
{
int t=0;
for(int i=0;i<s.length();i++){
if(c==s[i])
t++;
}
return t;
}
bool compare(char c, string s)
{
for(int i=0;i<s.length();i++)
{
if(c==s[i])
return true;
}
return false;
}
int main()
{
char s1[60],s2[60];
int num[60];
cout<<"Please input the sentence:"<<endl;
cin>>s1;
if(s1[0]=='#') return -1;
int j = 1;
s2[0] = s1[0];
for(int i=0;s1[i]!='\0';i++)
{
if(i==0)
{
num[0] = showTimes(s1[i], s1);
continue;
}
else if(!compare(s1[i],s2))
{
s2[j] = s1[i];
num[j] = showTimes(s1[i], s1);
j++;
}
}
int min,temp;
for(int i=0;i<strlen(s2);i++)
{
min=i;
for(j=i+1;j<strlen(s2);j++)
{
if(s2[j]<s2[min])
min=j;
}
temp=s2[i];
s2[i]=s2[min];
s2[min]=temp;
temp=num[i];
num[i]=num[min];
num[min]=temp;
}
int max=0;
for(int i = 0;i<strlen(s2);i++)
{
for(j=i+1;j<strlen(s2);j++)
{
if(num[j]>num[max])
max=j;
}
}
int num_max = num[max];
cout<<"output the sentence:"<<endl;
while(num_max--)
{
for(int i=0;i<strlen(s2);i++)
{
if(num[i]>0)
{
cout<<s2[i];
num[i]--;
}
}
}
cout<<endl;
return 0;
}