鱼C论坛

 找回密码
 立即注册
查看: 1570|回复: 1

[已解决]关于删除字符串中的重复字符串遇到的问题,大神帮忙看看

[复制链接]
发表于 2015-10-21 23:23:47 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#include <stdio.h>
#include <string.h>

void String_Delete(char str[]);

int main()
{
        char str[] = "xazsxazcqwlzxy";
        String_Delete(str);
        printf("the after:%s\n",str);
        return 0;
}

void String_Delete(char str[])
{
        int len = strlen(str);
        int i,j,m;
        for(i=0; i<len; i++)
        {
                for(j=i+1; j<len-i; j++)
                {
                        if(str[i] == str[j])
                        {

                                for(m=j; m<=len; m++)
                                {
                                        str[m]=str[m+1];
                                }

                                j--;
                                len--;
                        }
                        else
                                continue;
                }
                //len--;
                str[len+1] = '\0';
        }
       
}


我的思路是这样子的:从第一个字符开始以此跟后面的字符比较,如果有相等的就将那个字符的后面开始以此往前挪动一位,但是一直有些字符删除不了 。
最佳答案
2015-10-22 12:52:43
第二个for循环for(j=i+1; j<len-i; j++)改成for(j=i+1; j<len; j++)减i去掉,我知道的减去i的意思是j的循环根据j从数组哪位开始而定,假定10(0~9)位的字符串从1开始循环9-1=8次,从2开始就是9-2=7次,但是注意这里的情况是10位字符串,长度不变,但是这个题里你改变了字符串的总长度  len--;所以不可以这样写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-10-22 12:52:43 | 显示全部楼层    本楼为最佳答案   
第二个for循环for(j=i+1; j<len-i; j++)改成for(j=i+1; j<len; j++)减i去掉,我知道的减去i的意思是j的循环根据j从数组哪位开始而定,假定10(0~9)位的字符串从1开始循环9-1=8次,从2开始就是9-2=7次,但是注意这里的情况是10位字符串,长度不变,但是这个题里你改变了字符串的总长度  len--;所以不可以这样写
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 11:52

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表