第三十二题 多种方法来判断字符串中是否出现了相同字符
来源:互联网 发布:企鹅号矩阵绑定 编辑:程序博客网 时间:2024/05/22 04:37
题目:判断字符串中是否出现了一样的字符,如abcda,a出现了2次,则应该输出true
方法1:对于字符串中的每一个字符,遍历除了自身之外的其他字符,如果得到相同的字符,则输出为true,时间复杂度为O(n*n);这里就不给出代码了
方法2:给定的字符串中字符为ASCII中字符,定义一个布尔型的256位的数组,遍历字符串,将以字符的ASCII码值作为数组的位置索引,如果有某个字符,则其对应的位置设为true,因此,当出现相同的字符时,判断如果这个位置已经为true了,即字符串中有相同的字符。
bool isUnique(string s){bool a[256];memset(a, 0, sizeof(a));int len = s.length();for(int i=0; i < len; ++i){int v = (int)s[i];if(a[v]) return false;a[v] = true;}return true;}
方法3,:处理256种可能出现的字符,可以通过一个int型的数组来做,其长度为8,因为在32位或者64位的机器中,int都为4个字节,即32位,因此8个int类型的数即可表示256位,将每一个字符的ASCII码值除以32即可得出其属于哪一个位置的整数,然后对32求模得出这个数属于这个整数的“哪一位”,这样就能完整的表示字符串中的每一个字符,通过或运算将整数中指定的位置设为1,然后如果来了相同的元素,通过除以32得出其属于哪一个整数位,然后通过对32求模,通过对求模的值求与,因为如果曾经出现过相同的字符则此时与运算会得1,所以以此来判断是否有重复字符
bool isUnique2(string s){int a[8];memset(a, 0, sizeof(a));int len = s.length();for(int i=0; i < len; ++i){int v = (int)s[i];int idx = v/32, shift=v%32;if(a[idx] & (1 << shift)) return false;a[idx] |= (1 << shift);}return true;}
方法4:以上讲述的都是对256中字符进行处理,如果处理的字符只有26种,则一个int类型的整数即可完成判断工作,则处理过程如上
0 0
- 第三十二题 多种方法来判断字符串中是否出现了相同字符
- 判断字符串中是否有相同的字符
- 字符串问题---判断字符数组中是否所有的字符只出现了一次
- 判断一个字符串是否含有相同字符
- 判断字符串中每个字符是否唯一出现
- c# 如何判断字符串中相同字符串的个数 (相同字符在字符串中出现的次数)
- 查找字符串中是否包含相同字符
- 判断字符串中是否有相同字母
- 判断字符串中有无相同字符
- oracle:判断某个字符在字符串中出现了几次
- 判断字符串是否相同
- js判断字符串中是否存在某些字符的方法
- js判断字符串中是否存在某些字符的方法
- JS判断字符串中是否含有某个字符的方法
- 判断字符串中是否包含特定字符的方法总结
- 判断两个字符串是否有相同的字符
- Arrays_Strings 判断两个字符串是否有相同的字符 @CareerCup
- 1.4-判断两个字符串是否由相同字符组成
- 爱,是尘世间人人追求的人生之最,是生活中无处不在的美
- 域名长短-SEO搜索引擎优化
- 暖风熏得游人醉,趁着假日小闲,也想做一回文人雅士
- 【甘道夫】MapReduce实现矩阵乘法--实现代码
- C++中vector reserve和resize函数
- 第三十二题 多种方法来判断字符串中是否出现了相同字符
- https介绍
- 如何将二维数组作为函数的参数传递
- python模块-re模块
- 财宝通网络POS机让我拥有一份事业
- 01背包问题的学习(来源:背包九讲)
- Android项目中导入第三方类库方法
- ado.net 自己编写的SqlHelper类
- MyBatis系列教程(一)--入门(QuickStart)