2015-10-21 127 views
-1

我想知道如何在字符串上打印重複的字符? 此外,打印副本不應該每個字母單獨,而只是一個字母序列。最常遇到的字母應該放在序列的前面。 我給了字符串。我得到相同的字符串預先如何查找和打印字符串上的重複字符?

+2

請編輯您的問題,所以它是有意義的,是可讀的排序基於第一索引你的陣列[] []。這些句子沒有任何意義:「此外,複印件不應該是每個字母,而應該是一個字母序列,最常見的字母應該放在序列的前面。」 – jaybers

+0

你在問什麼? –

+0

例如 單詞「梭魚」 - >「aaarrbcud」 – Dom

回答

0

使用

由於計數sort.see here 用於佈置基於頻率字符的輸出只是使用2D陣列陣列[255] [2]。

有一個數組的大小取決於你有的字符的範圍。例如,如果你有所有的字符範圍都有一個array[255],並且每次讀取一個值時都繼續遞增。如果你只有字母表array[26]

然後,只需使用qsort

#include<stdio.h> 
#include<stdlib.h> 

int intcmp(const void *a,const void *b){ 
int *A = (int*)a; 
int *B = (int*)b; 
if(A[0]>B[0]) 
    return -1; 
if(A[0]<B[0]) 
    return 1; 
if(A[0]==B[0]) 
    return 0; 
} 
int main() 
{ 
    char st[100]; 
    int ar[26][2]={0},size=0,i; 
    scanf("%s",&st); 

    for(i=0;st[i]!='\0';i++) 
    { 
     ar[st[i]-97][1]=st[i]; 
     ar[st[i]-97][0]++; 
    } 
    qsort(ar,26,sizeof(int)*2,intcmp); 
    for(i=0;i<26;i++) 
    { 
     while(ar[i][0]--) 
     printf("%c",ar[i][1]); 
    } 
return 0; 
} 
+0

urraaadbc - >它必須是aaarrbcud – Dom

+0

只是爲了給你的想法,但現在仍然檢查... – wrangler

+0

牧馬人,謝謝 – Dom