2. (程序题) 给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。 输入: 示例: leetcode loveleetcode 输出: 0 2 提示:你可以假定该字符串只包含小写字母。 用c语言
时间: 2024-02-20 08:56:53 浏览: 90
以下是用C语言实现的代码:
```c
#include <stdio.h>
#include <string.h>
int firstUniqChar(char* s) {
int count[26] = {0};
int length = strlen(s);
// 统计每个字符出现的次数
for (int i = 0; i < length; i++) {
count[s[i] - 'a']++;
}
// 找到第一个只出现一次的字符
for (int i = 0; i < length; i++) {
if (count[s[i] - 'a'] == 1) {
return i;
}
}
return -1;
}
int main() {
char str1[] = "leetcode";
char str2[] = "loveleetcode";
printf("%d\n", firstUniqChar(str1)); // 输出 0
printf("%d\n", firstUniqChar(str2)); // 输出 2
return 0;
}
```
该代码使用了一个长度为 26 的数组 `count` 来统计每个小写字母出现的次数,然后再遍历字符串找到第一个只出现一次的字符。时间复杂度为 O(n),其中 n 是字符串的长度。
相关问题
python语言编写以下程序:给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1
在Python中,你可以通过创建一个哈希表来追踪字符及其出现次数,然后遍历字符串一次,找到第一个只出现一次的字符。以下是实现这一功能的简单代码:
```python
def firstUniqChar(s):
char_count = {} # 创建一个字典用于存储字符计数
for i, char in enumerate(s): # 遍历字符串和其索引
if char in char_count:
char_count[char] += 1
else:
char_count[char] = 1
# 再次遍历字符串,检查字符计数是否为1,找到第一个不重复的字符的索引
for i, char in enumerate(s):
if char_count[char] == 1:
return i # 返回字符的索引
return -1 # 如果找不到不重复的字符,返回-1
# 测试
test_str = "loveleetcode"
print(firstUniqChar(test_str)) # 输出:0,因为'l'是第一个不重复的字符
```
在这个函数中,我们首先统计了字符串中每个字符出现的次数,然后再查找第一次出现次数为1的字符的索引。
4.给定一个字符串,找到它的第一个不重复的字符(字母都为小写),并返回它的索引。如果不存在,则返回空字符串
### 回答1:
这道题目需要写一个函数,输入一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在这样的字符,则返回空字符串。
可以使用一个字典来统计每个字符出现的次数,然后再遍历一遍字符串,找到第一个出现次数为1的字符。如果找不到则返回空字符串。
下面是 Python 的代码实现:
```Python
def firstUniqChar(s: str) -> str:
dic = {}
for c in s:
if c in dic:
dic[c] += 1
else:
dic[c] = 1
for i, c in enumerate(s):
if dic[c] == 1:
return i
return ""
s = "abaccdeff"
print(firstUniqChar(s)) # output: 1
```
这里使用了 Python 中的字典,对每个字符出现的次数进行统计。然后再遍历一遍字符串,找到第一个出现次数为1的字符并返回它的索引,如果找不到则返回空字符串。
### 回答2:
这道题目要求我们在给定的字符串中找到第一个不重复的字符,并返回其索引。我们可以用一个哈希表来解决这个问题。
首先,我们需要将字符串转化为一个哈希表,其中每个字符为键,其出现次数为值。然后,我们遍历整个字符串,对于每个字符,从哈希表中找出其出现次数。如果该字符只出现了一次,那么就是我们要找的字符,返回其索引即可。
如果遍历整个字符串都没有找到符合条件的字符,那么就返回空字符串。
下面是具体的实现方法:
```python
def find_first_non_repeated_char(str):
char_dict = {}
for char in str:
if char in char_dict:
char_dict[char] += 1
else:
char_dict[char] = 1
for i, char in enumerate(str):
if char_dict[char] == 1:
return i
return ""
```
读入字符串后,首先遍历整个字符串,将每个字符出现的次数存入哈希表中。然后再遍历一次字符串,找到第一个出现次数为1的字符,返回其索引。如果找不到符合条件的字符,则返回空字符串。
这个算法的时间复杂度为O(n),其中n为字符串的长度。因为需要遍历两次字符串,所以空间复杂度为O(n)。
### 回答3:
解题思路:
首先考虑到需要遍历整个字符串,统计每个字符出现的次数。由于字符都是小写字母,因此可以用一个大小为26的数组来记录每个字符出现的次数。
之后再次遍历字符串,对于每个字符,如果它的出现次数为1,就返回它的索引。如果遍历完整个字符串没有找到符合条件的字符,就返回空字符串。
代码实现:
```python
def first_uniq_char(s: str) -> str:
# 初始化一个大小为26的数组,每个元素代表一个小写字母的出现次数
freq = [0] * 26
# 统计每个字符出现的次数
for i in range(len(s)):
freq[ord(s[i]) - ord('a')] += 1
# 再次遍历字符串,找到第一个出现次数为1的字符
for i in range(len(s)):
if freq[ord(s[i]) - ord('a')] == 1:
return str(i)
# 没有找到符合条件的字符,返回空字符串
return ""
```
时间复杂度:
对于给定的字符串,需要遍历两次,因此时间复杂度为O(n)。
空间复杂度:
需要使用一个大小为26的数组来保存每个字符出现的次数,因此空间复杂度为O(1)。
阅读全文