C 如何查找和打印字符串上的重复字符?
我想知道如何在字符串上打印重复字符? 此外,打印副本不应单独打印每个字母,而应仅打印一系列字母。最常遇到的字母应该放在序列的前面。 我已经给了绳子。我得到的输出是相同的字符串 提前感谢使用计数排序。请参阅 要根据频率排列字符,只需使用2d数组[255][2] 根据您拥有的字符范围设置大小的数组。例如,如果你有所有的字符范围,就有一个C 如何查找和打印字符串上的重复字符?,c,string,C,String,我想知道如何在字符串上打印重复字符? 此外,打印副本不应单独打印每个字母,而应仅打印一系列字母。最常遇到的字母应该放在序列的前面。 我已经给了绳子。我得到的输出是相同的字符串 提前感谢使用计数排序。请参阅 要根据频率排列字符,只需使用2d数组[255][2] 根据您拥有的字符范围设置大小的数组。例如,如果你有所有的字符范围,就有一个数组[255],并且每次读取一个值时就不断递增。如果你只有字母表,就有数组[26] 然后根据第一个索引使用 #包括 #包括 int intcmp(常数无效*a,常数无
数组[255]
,并且每次读取一个值时就不断递增。如果你只有字母表,就有数组[26]
然后根据第一个索引使用
#包括
#包括
int intcmp(常数无效*a,常数无效*b){
int*A=(int*)A;
int*B=(int*)B;
如果(A[0]>B[0])
返回-1;
如果(A[0],请编辑您的问题,使其有意义且可读。这些句子没有任何意义:“此外,打印副本不应单独打印每个字母,而应仅打印一系列字母。最常见的字母应放在序列的前面。”您问什么?例如单词“梭鱼”->“aaarrbcud”@Pavel您打印的图案是什么?既不是排序的,也不是原始顺序?首先,最常出现的字母,然后是字母,它是rarrarraaadbc-->它必须是aaarrbcud
#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;
}