输出不重复的字符

输出不重复的字符

问:C语言 输入一个字符串 去掉重复的字符,输出无重复的
  1. 答:统计字符串中的重复字符,可以通过简单哈希算法来实现。
    有效的字符的ascii值在0-127之间,定义一个128位的数组,初始化为0,用数组下标对应相应的字符,数组元素值表示字符出现的频率,统计相应字符的个数,个数大于1的字符就是重复的。
    参考代码如下:
    #include
    void main()
    {
    char s[1024];
    int carr[128]={0};
    int i;
    printf("input a string: ");
    gets(s);
    for( i=0;s[i];i++ )
    {
    int index=s[i];
    if ( index >=0 && index <= 127 ) //安全处理,防止输入异常时,程序出错
    carr[index]++ ;
    }
    for( i=0;i<128;i++ )
    if ( carr[i] > 1 )
    printf("%c:%d\n", i, carr[i] );
    }运行结果:
    input
    a
    string:
    hello
    world
    l:3
    o:2
  2. 答:统计字符串中的重复字符,可以通过简单哈希算法来实现。
    有效的字符的ascii值在0-127之间,定义一个128位的数组,初始化为0,用数组下标对应相应的字符,数组元素值表示字符出现的频率,统计相应字符的个数,个数大于1的字符就是重复的。
    参考代码如下:
    #include
    void main()
    {
    char s[1024];
    int carr[128]={0};
    int i;
    printf("input a string: ");
    gets(s);
    for( i=0;s[i];i++ )
    {
    int index=s[i];
    if ( index >=0 && index <= 127 ) //安全处理,防止输入异常时,程序出错
    carr[index]++ ;
    }
    for( i=0;i<128;i++ )
    if ( carr[i] > 1 )
    printf("%c:%d\n", i, carr[i] );
    }运行结果:
    input
    a
    string:
    hello
    world
    l:3
    o:2
问:c#在控制台上输入若干个有重复的字符串,按顺序将不重复的字符串输出
  1. 答:实现思路,替换掉指定字符串为空后和原字符串长度进行对比,如果比原字符串小1个长度,那么说明没有重复,如果小了2个或2个以上长度,说明是重复的字符串,并以此为条件,控制输出不重复的字符串。
    代码如下:
    static void Main(string[] args){
        string input = Console.ReadLine();
        foreach (char item in input)
            if (input.Replace(item.ToString(), "").Length == input.Length - 1)
                Console.WriteLine(item);

    //这应该是比较精简的写法了,望采纳!
  2. 答:字符以输入相反的顺序输出
问:C语言 输入一个字符串 去掉重复的字符,输出无重复的
  1. 答:#include<stdio.h>
    #include<string.h>
    main()
    {int i,a[127]={0};
     char s[100];
     printf("Enter a string:\n");
     gets(s);
     for(i=0;i<strlen(s);i++)
       if(a[(int)s[i]]==0)
       {a[(int)s[i]]=1; printf("%c",s[i]);}
     printf("\n");
    }
  2. 答:#include<stdio.h>int main(){ char str[100]="";//输入字符串,自己设置长度 char out[100]=""; int letter[127]; int k=127,m=0; while(k--)letter[k]=-1; puts("input a string:"); gets(str); for(k=0;k<100;k++) letter[str[k]]++; for(k=0;k<100;k++) if(letter[str[k]]==0)out[m++]=str[k]; out[m]='\0'; puts(out); getchar(); return 0; }
    想要排除重复,即留下只出现1次的,的,判断处if(letter[str[k]]==0)
    若想留下出现N次的,判断处if(letter[str[k]]==N-1) 即可。
输出不重复的字符
下载Doc文档

猜你喜欢