【字符】删除重复字符

【字符】删除重复字符

输入一个长度不超过 100 的字符串,删除串中的重复字符。

输入:

输入要检查的字符串,长度不超过100个字符。例如:abacaeedabcdcd。

输出:

删除重复字符后的字符串。例如:abced。

样例:

序号测试输入期待的输出额外进程
1abacaeedabcdcd↵abced↵0
2111122233344455577yuyuyu↵123457yu↵0
311111111111111↵1↵0

思路

我首先想到的是,对该字符串使用双重循环进行遍历,如果发现有重复的字符,就把该字符置为’\0’,最后再把这个字符数组中所有的’\0’去掉,此时得到的字符串就是删除重复字符后的目标字符串。

代码

#include <stdio.h>   
#include <string.h>  
main() {  
    char a[100];  
    scanf("%s",a) ;  
    int length=strlen(a);  
    int i,j;  
    for(i=0;i<length;i++)
	{  
        for(j=i+1;j<length;j++)
		{  
            if(a[i]==a[j])
			{   
                a[j] = '\0';
            }  
        }
        if(a[i]!='\0')
        printf("%c",a[i]);
    }  
    printf("\n");
    return 0;  
} 

课外思考

这样写确实可以,但毕竟用了双循环,时间复杂度是O(N2),同学们呢可以想一想能不能用空间换时间呢?
淡然是可以哒!!!
只需要用一个数组存储出现过的字符就可以啦,因为自负最多只有256个(实际上只有一百多个)

#include <stdio.h>  
char mark[300],x;
int main()  
{
	while((x = getchar()) != '\n')
	{
		if(!mark[x])
		{
			putchar(x);
			mark[x]++;
		}
	}
	puts("");
}

写成一行就是

#include <stdio.h>  
char mark[300],x;
int main()  
{
	do if(!mark[(x = getchar())]++) putchar(x);while(x != '\n');
}
  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
北理工乐学C语言答案主要包含以下内容: 1. C语言的基础知识:包括C语言的起源和发展、C语言的编译与执行过程、C语言的数据类型、运算符和表达式、控制结构等。这些知识点是学习C语言的基础,掌握好这些知识对于进一步学习和应用C语言非常重要。 2. C语言的语法规则:包括C语言的注释方式、标识符的命名规则、变量的定义和声明、函数的定义和调用等。熟悉和掌握C语言的语法规则可以帮助我们编写出规范的C语言程序,并且减少错误的发生。 3. C语言输入输出:包括C语言中的标准输入输出函数scanf和printf的使用方法,以及文件的输入输出操作。掌握C语言输入输出是进行程序开发和调试的基础,也是与用户进行交互的重要手段。 4. C语言的函数与模块化编程:包括C语言中函数的定义、函数的参数传递、函数的返回值等。学会如何使用函数可以使程序的结构更加清晰,提高代码的复用性和可维护性。 5. C语言的数组与指针:包括C语言中数组和指针的概念、数组和指针的使用方法,以及二维数组和指针的关系等。了解和掌握数组和指针的用法可以更好地处理复杂的数据结构和算法。 6. C语言字符串处理:包括C语言字符串的定义和表示方法,以及字符串相关的函数库的使用。字符串处理在实际编程中非常常见,掌握字符串处理的技巧可以提升程序的效率和可读性。 北理工乐学C语言答案综合了以上内容,帮助学习者全面理解和掌握C语言的基本知识和技巧,为进一步学习和应用C语言打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值