码迷,mamicode.com
首页 > 其他好文 > 详细

字符串去重

时间:2018-08-17 20:04:06      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:分析   字符串去重   相等   can   dde   删除   str   字符   scanf   

1、用C语言写

方法一:

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

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

  代码如下:

#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] =\0;    //最后留出的空位置\0
                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] = \0;    //最后留出的空位置\0
                len -= 1;
                i -= 1;    //第i的位置值已经替换,外while需要再次从i的位置循环
                break;    //终止本次while循环比较
            }
            j += 1;
        }
        i += 1;
    }
    printf("%s",a);
}

 

字符串去重

标签:分析   字符串去重   相等   can   dde   删除   str   字符   scanf   

原文地址:https://www.cnblogs.com/thoughtful-actors/p/9494967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!