字符串去重

Posted thoughtful-actors

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字符串去重相关的知识,希望对你有一定的参考价值。

1、用C语言写

方法一:

分析:给一个十个字符的字符串aabbccddee。第一个字符依次跟后面的字符比较,如果有相等的就删除。然后再从第二个字符开始,用第二个字符依次跟后面的比较,如果有相等的就删除。依次类推,需要循环总字符长度-1次。删除用后位前移处理,最后空出的一位就置。当遇到有相等的字符,就从相等的那个字符位置开始做后位前移操作。

关键:这个主要思路就是从左开始指定字符,依次与后面的比较,实现后面无相同的字符。

  代码如下:

#include "stdio.h"
#include "string.h"
void main()
{
    char a[100];
    int i,len,k,j;
    printf("请输入字符串:");
    scanf("%s",a);
    i = 0;
    len = strlen(a);
    while(i<len-1)
    {
        j = i+1;
        while(j<len)    //第i个位置的值依次跟后面的值比较
        {
            if (a[i] == a[j])    //如果相等,从第j的位置开始后位前移
            {
                k = j;
                while(k<len-1)
                {
                    a[k] = a[k+1];    //执行后位前移
                    k += 1;
                }
                a[len-1] =;    //最后留出的空位置
                len -= 1;
                j -= 1;    //由于第j的位置出现新值,内while需要重新从j开始比较
            }
            j += 1;
        }
        i += 1;
    }
    printf("%s",a);
}

方法二:

  分析:把要去重的字符串分成两部分,一部分是没有重复的,另一部分是有重复的,先确定第一个字符是未重复部分,然后把第二个字符与第一个比较,相同就执行后位前移操作,如果不同,就把第二个字符也放进未重复部分,然后再第三个字符跟未重复部分进行比较,重复同样的操作,最后实现所有字符串的比较。

  关键:这个思路主要是先把第一个看成是未重复的一部分,然后用后面的依次跟前面的比较,不相同就放到没有重复的部分,保证比完的都是没有重复的字符,然后拿还没有比的字符依次跟未重复部分比较。

  代码如下:

#include "stdio.h"
#include "string.h"
void main()
{
    char a[100];
    int i,len,k,j;
    printf("请输入字符串:");
    scanf("%s",a);
    i = 1;
    len = strlen(a);
    while(i<len)
    {
        j = 0;    
        while(j<i)    //第i个位置的值依次跟前面的比较
        {
            if (a[j] == a[i])    //如果相等,从第i个位置开始后位前移
            {
                k = i;
                while(k<len-1)
                {
                    a[k] = a[k+1];    //执行后位前移
                    k += 1;
                }
                a[len-1] = ;    //最后留出的空位置
                len -= 1;
                i -= 1;    //第i的位置值已经替换,外while需要再次从i的位置循环
                break;    //终止本次while循环比较
            }
            j += 1;
        }
        i += 1;
    }
    printf("%s",a);
}

 

以上是关于字符串去重的主要内容,如果未能解决你的问题,请参考以下文章

数组去重操作

21个常用代码片段

字符串文档的去重

片段(Java) | 机试题+算法思路+考点+代码解析 2023

PHP 代码片段

JavaScript 代码片段