在字符串中查找是否有重复字符

    字符串类型的题目是面试笔试最青睐的类型。。。之一。最近陆陆续续重新开始看些基础的东西,真是“三天不练手生”,很多东西都忘得差不多了。。。记录在这里偶尔回顾的时候还能翻来看看。贴上来的程序经过测试的,但也可能有隐藏的bug。

 

[方法一]

    这是最节省内存的方法,但是效率一般般。复杂度为O(n2)。

    思路是,从字符串的第一个字符开始,看后面有没有和它相同字符。

 

[方法二]

    此类题目追求的所谓最优解是复杂度越低越好,这个方法效率很高,O(N),空间换时间,需要辅助空间。思路是,开辟一个具有256个元素的整型数组,为什么是256个元素呢,因为ASCII字符一共256个(从0开始,前128个为常用的字符,如运算符、字母、数字等键盘上可以显示的,后128个为特殊字符,是键盘上找不到的字符)。这个数组的index就是字符的ASCII码,值就是该元素出现的次数。

 

只要这个次数大于1,就说明重复了。看到一个对while循环的不同实现,大同小异,没我这个直观,但是觉得更有趣。

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值