编写一个Python程序,能在字符串中找出第一-个只出现一次的字符,要求时间复杂度不超过O(n).
时间: 2024-09-24 20:30:03 浏览: 47
在Python中,你可以使用哈希集合(set)的数据结构来解决这个问题。哈希集合的特点是元素唯一且查找速度快,时间复杂度为O(1)。以下是利用这个特性编写的一个简单的程序:
```python
def first_unique_char(s):
char_count = {} # 创建一个空字典用于存储每个字符及其计数
for char in s:
if char in char_count: # 如果字符已存在于字典中,计数加一
char_count[char] += 1
else: # 否则,将字符添加到字典并设置计数为1
char_count[char] = 1
for i, char in enumerate(s): # 遍历原字符串
if char_count[char] == 1: # 当字符计数为1时,返回该字符的索引
return i
# 如果没有找到唯一的字符,则返回-1表示不存在
return -1
# 测试函数
s = "leetcode"
print(first_unique_char(s)) # 输出:0,因为'l'是第一个只出现一次的字符
```
这个程序的时间复杂度确实是O(n),因为它遍历输入字符串一次。
相关问题
编写一个python程序,能在字符串中找出第一个只出现一次的字符,要求时间复杂度不超过O(n)
```python
def find_first_unique_char(s):
"""
在字符串中找出第一个只出现一次的字符
:param s: 字符串
:return: 第一个只出现一次的字符,如果没有则返回None
"""
# 构建一个字典,存储每个字符出现的次数
char_dict = {}
for char in s:
char_dict[char] = char_dict.get(char, 0) + 1
# 遍历字符串,找到第一个只出现一次的字符
for char in s:
if char_dict[char] == 1:
return char
return None
```
时间复杂度为O(n),因为遍历字符串和构建字典的时间复杂度都为O(n)。
编写一个python程序,能在字符串中找出第一个只出现一次的字符,要求时间复杂度不超过O(n)
可以使用哈希表来实现,遍历字符串,将每个字符作为键,出现次数作为值存入哈希表中。再次遍历字符串,找到第一个值为1的字符即可。
以下是示例代码:
```python
def find_first_unique_char(s):
char_dict = {}
for c in s:
if c in char_dict:
char_dict[c] += 1
else:
char_dict[c] = 1
for c in s:
if char_dict[c] == 1:
return c
return None
```
时间复杂度为O(n),其中n为字符串长度。
阅读全文