题目
给定一个字符串string
,如果该字符串所有字符唯一则返回True
,否则返回False
。
例子
None -> False
"" -> True
"hello" -> False
"world" -> True
假设
字符串字符仅由ascii字符组成
tips
统计每个字符的出现次数
你能想到不借助额外数据结构的解法吗?
答案
此题有三种解法
解法1:
def has_unique_chars(string):
if string is None:
return False
return len(set(string)) == len(string)
性能:
- 时间复杂度
O(n)
- 空间复杂度
O(n)
关键点:
- python中集合(
set
)的特性:无重复元素
解法2:
def has_unique_chars(string):
if string is None:
return False
chars_set = set()
for char in string:
if char in chars_set:
return False
else:
chars_set.add(char)
return True
性能:
- 时间复杂度
O(n)
- 空间复杂度
O(n)
关键点:
- pyhton中集合(
set
)的特性:无重复元素
解法三:
def has_unique_chars(string):
if string is None:
return False
for char in string:
if string.count(char) > 1:
return False
return True
性能:
- 时间复杂度
O(n^2)
- 空间复杂度
O(1)
关键点:
- String对象的
count
方法:统计输入字符在该String对象内出现的次数
-----内容来自【夸克编程】每日一题,仅用作为学习记录