用于检查字符串是否包含所有唯一字符的Python程序
实现一种算法来确定一个字符串是否包含所有唯一字符。
例子:
Input : s = “abcd”
Output: True
“abcd” doesn’t contain any duplicates. Hence the output is True.
Input : s = “abbd”
Output: False
“abbd” contains duplicates. Hence the output is False.
一种解决方案是创建一个布尔值数组,其中索引 i 处的标志指示字母表中的字符i 是否包含在字符串中。第二次看到这个字符时,您可以立即返回 false。
如果字符串长度超过字母表中唯一字符的数量,您也可以返回 false。
Python
def isUniqueChars(st):
# String length cannot be more than
# 256.
if len(st) > 256:
return False
# Initialize occurrences of all characters
char_set = [False] * 128
# For every character, check if it exists
# in char_set
for i in range(0, len(st)):
# Find ASCII value and check if it
# exists in set.
val = ord(st[i])
if char_set[val]:
return False
char_set[val] = True
return True
# driver code
st = "abcd"
print(isUniqueChars(st))
Python3
from collections import Counter
def isUniqueChars(string):
# Counting frequency
freq = Counter(string)
if(len(freq) == len(string)):
return True
else:
return False
# driver code
st = "abcd"
print(isUniqueChars(st))
# This code is contributed by vikkycirus
输出:
True
方法 #2:使用内置Python函数:
- 使用Counter()函数计算字符的频率
- 如果频率字典中的键(给出不同字符的计数)等于字符串的长度,则打印 True 否则 False
下面是实现:
Python3
from collections import Counter
def isUniqueChars(string):
# Counting frequency
freq = Counter(string)
if(len(freq) == len(string)):
return True
else:
return False
# driver code
st = "abcd"
print(isUniqueChars(st))
# This code is contributed by vikkycirus
输出:
True
时间复杂度: O(N)