您的位置:首页 > 理论基础 > 数据结构算法

数组字符串系列之:判断一个输入字符串中的每个字符唯一,只能使用基本的数据结构

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++实现

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐