输入字符串删除重复字符

输入字符串删除重复字符

问: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. 答:#include<stdio.h>
    int main(void)
    {
    char s[100];
    int i, j, n, k;
    printf("请输入一串有重复字符的字符串:\n");
    gets(s);
    for (n = 0; s[n] != '\0'; n++);
    for (i = 0; i < n ; i++)
    {
    for (j = k = i + 1; j < n ; j++)
    if (s[j] != s[i])
    s[k++] = s[j];
    s[k] = '\0';
    }
    printf("去掉重复字符后结果为:\n");
    puts(s);
    }
问:输入字符串,再输入一个字符,将字符串中与输入字符相同的字符删除
  1. 答:#include
    void
    delchar(char*
    str,
    char
    c)
    {
    int
    i
    =
    0,
    j
    =
    0;
    while
    (str[j]
    !=
    0)
    {
    if
    (str[j]
    !=
    c)
    {
    str[i]
    =
    str[j];
    i++;
    }
    j++;
    }
    str[i]
    =
    0;
    }
    int
    main()
    {
    char
    s[100];
    while
    (scanf("%s",
    s)
    !=
    eof)
    {
    delchar(s,
    'a');
    printf("[%s]\n",
    s);
    }
    return
    0;
    }
    想象两个下标一个i一个j。j一直向前走,如果碰到要剔除的字符就跳过去,但是i不跳过去,如果不是要剔除的字符就复制给i,然后i也前进,这样就把要剔除的字符删掉了。只用遍历一遍,用strcpy发现一个要删除的字符就复制一遍,额外多做了很多无用功。
输入字符串删除重复字符
下载Doc文档

猜你喜欢