この問題は、昇順でのASCII文字列に応じて、繰り返し文字列が削除されて与えられ、プログラミングを必要と出力されます。
入力フォーマット:
非空の文字列の入力が終了(80文字未満)を入力します。
出力フォーマット:
再出力した結果は、文字列をソート。
サンプル入力:
ad2f3adjfeainzzzv
出力例:
23adefijnvz
アイデア:
大量の注文に小さなからASCIIコード・シーケンス内の文字の最初の文字列、その後、ソートされた配列は、重複したエントリを削除します。
#include<stdio.h>
#include<string.h>
char* sortArray(char *str, int n);
char* deleteDuplicate(char *str, int n);
int main(){
char str[80];
gets(str);
int n = strlen(str);
sortArray(str,n);
printf("%s",deleteDuplicate(str,n));
}
/**
*选择排序
*/
char* sortArray(char *str, int n){
for(int i=0; i<n-1; i++){
char min=str[i];
int minIdx=i;
for(int j=i+1; j<n; j++){
if(str[j]<min){
min=str[j];
minIdx=j;
}
}
if(min<str[i]){
char t=str[i];
str[i]=min;
str[minIdx]=t;
}
}
return str;
}
/**
*对排序后的数组删除重复项
*/
char* deleteDuplicate(char *str, int n){
char* ret=str;
ret[0]=str[0];
int j=1;
for(int i=1; i<n; i++){
if(str[i]==str[i-1]){
continue;
}else{
ret[j]=str[i];
j++;
}
}
ret[j]='\0';
return ret;
}