[C] PTA重複文字を削除

この問題は、昇順での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;
}

 

37元記事公開 ウォン称賛47 ビューに10万+を

おすすめ

転載: blog.csdn.net/u013378642/article/details/104886020