给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no
时间: 2023-05-31 10:18:02 浏览: 335
在一个字符串中找到第一个只出现一次的字符
### 回答1:
解题思路:
可以使用哈希表来记录每个字符出现的次数,然后再遍历一遍字符串,找到第一个出现次数为1的字符即可。
代码实现:
```python
def first_unique_char(s):
# 构建哈希表
hash_map = {}
for c in s:
if c in hash_map:
hash_map[c] += 1
else:
hash_map[c] = 1
# 遍历字符串,找到第一个出现次数为1的字符
for c in s:
if hash_map[c] == 1:
return c
# 如果没有,输出no
return "no"
```
测试样例:
```python
print(first_unique_char("leetcode")) # 输出 "l"
print(first_unique_char("loveleetcode")) # 输出 "v"
print(first_unique_char("aabbcc")) # 输出 "no"
```
### 回答2:
题目描述:
给定一个只包含小写字母的字符串,请你找到第一个仅出现一次的字符。如果没有,输出no。
解题思路:
这道题目可以使用哈希表来解决。将字符串s中的每一个字符都遍历一遍,并统计每个字符出现的次数,存储到哈希表中。最后再遍历一遍字符串s,在哈希表中找到第一个出现次数为1的字符,即为所求的答案。
Python 代码实现:
class Solution:
def firstNotRepeatingChar(self, s: str) -> str:
if not s:
return "no"
hash_map = {}
# 统计每个字符出现的次数
for i in s:
if i not in hash_map:
hash_map[i] = 1
else:
hash_map[i] += 1
# 遍历每个字符,在哈希表中找到第一个出现次数为1的字符
for i in s:
if hash_map[i] == 1:
return i
# 没有出现次数为1的字符
return "no"
时间复杂度:O(n),其中n为字符串的长度。需要遍历两次字符串s,哈希表的插入和查询操作都是O(1)的。
空间复杂度:O(26),因为只包含小写字母,所以哈希表的大小为26。
### 回答3:
这道题目其实就是要找到字符串中出现次数为1的第一个字符。具体思路可以用哈希表实现。首先需要遍历字符串,把每个字符出现的次数记录到哈希表中。然后再次遍历字符串,找到出现次数为1的第一个字符即可。时间复杂度为O(n)。
具体步骤如下:
1. 遍历字符串,把每个字符出现的次数记录到哈希表中。
2. 再次遍历字符串,找到出现次数为1的第一个字符,输出即可。
3. 如果没有找到出现次数为1的字符,则输出no。
下面是具体实现的代码:
```python
def find_first_unique_char(s:str) -> str:
dic = {}
for ch in s:
if ch in dic:
dic[ch] += 1
else:
dic[ch] = 1
for ch in s:
if dic[ch] == 1:
return ch
return "no"
```
需要注意的是,这里的哈希表可以用Python中的字典实现,键为字符,值为该字符出现的次数。
如果要考虑字符集比较大的情况,可以使用数组代替哈希表实现。需要开一个长度为26的数组记录每个字符出现的次数。具体代码如下:
```python
def find_first_unique_char(s:str) -> str:
cnt = [0 for _ in range(26)]
for ch in s:
cnt[ord(ch) - ord('a')] += 1
for ch in s:
if cnt[ord(ch) - ord('a')] == 1:
return ch
return "no"
```
时间复杂度和空间复杂度均为O(1)。
阅读全文