数组字符串系列之:判断一个输入字符串中的每个字符唯一,只能使用基本的数据结构
2014-07-08 12:07
501 查看
实现一个算法,判断一个输入字符串中的每个字符唯一,不能使用额外的数据结构。eg:abbdf返回false
方法1:从头到尾取每个字符,并依次与其后的字符比较,判断是否有重复。时间复杂度N^2。
方法2:字符最多有256种,可以开辟一个256大小的bool数组,用字符对应的ASCII码作为数组下表,来标记字符的出现情况。最理想的线性时间复杂度N。
2.1将bool数组初始化为0;
2.2判断字符串长度是否小于等于256,如果大于256则结束,返回false,说明有重复;
2.3从头到尾扫描字符串,如果当前为0则改为1,如果当前为1则结束,返回false,说明有重复。
C++实现
方法1:从头到尾取每个字符,并依次与其后的字符比较,判断是否有重复。时间复杂度N^2。
方法2:字符最多有256种,可以开辟一个256大小的bool数组,用字符对应的ASCII码作为数组下表,来标记字符的出现情况。最理想的线性时间复杂度N。
2.1将bool数组初始化为0;
2.2判断字符串长度是否小于等于256,如果大于256则结束,返回false,说明有重复;
2.3从头到尾扫描字符串,如果当前为0则改为1,如果当前为1则结束,返回false,说明有重复。
C++实现
bool determine_string(const string &ss) { bool sign[256] = {0}; //memset(sign,0,sizeof(sign)); int len = ss.length(); if(len>256) return false; else { for(int i=0;i<len;i++) { if(sign[ss[i]]==0) sign[ss[i]] = 1; else return false; } return true; } }Python实现
def determine_string(ss): sign = [0]*256 length = len(ss) if length>256: return False else: for i in range(0,length): if sign[ord(ss[i])]==0: sign[ord(ss[i])] = 1 else: return False return True
相关文章推荐
- 实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)
- 编程题--给定一个字符串数组,判断每个字符出现次数
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 在控制台输入一个字符串 判断每个字符出现的次数
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- Java给定一个字符串数组,判断每个字符出现次数
- js脚本系列(1) JS判断输入字符串长度(汉字算两个字符,字母数字算一个)
- 判断一个字符串中的字符是否唯一(只用基本数据结构)
- 华为机试题:输入两个超长整型构成的字符串,其间使用一个空格分隔,每个字符串最大长度为100个字符。求第一个整数除以第二个整数以后的余数。。
- 字符串替换空格: 请实现一个函数,把字符数组中的每个空格替换成“%20”。 例如输入“we are happy.”,则输出“we are happy.”
- CTCI系列--1.1 判断一个字符串中的字符是否唯一(C语言)
- CTCI系列--1.1 判断一个字符串中的字符是否唯一(C语言)
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)
- 算法练习:判断一个字符串中的字符是否唯一(只用基本数据结构)
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。
- 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student". 要求: 不能使用库函数。只能开辟有限个空间(空间个数和字符串的长度无关)。 提交
- 1.1 设计算法判断一个字符串中字符都是否唯一的。如果不能使用额外的数据结构呢?
- 字符串替换空格: 请实现一个函数,把字符数组中的每个空格替换成“%20”。 例如输入“we are happy.”,则输出“we%20are%20happy.”。