输入一个长度为n的字符串,在其中找到第一个只出现一次的字符,并输出它的位置,如果没有则输出-1。字符串只有字母组成,且字母需要区分大小写n的范围是0~10000。用python如何实现
时间: 2024-04-15 18:32:13 浏览: 15
要在Python中实现找到第一个只出现一次的字符并输出其位置的功能,可以使用一个字典来记录每个字符出现的次数和位置信息。首先遍历一遍字符串,统计每个字符出现的次数和位置。然后再遍历一遍字符串,找到第一个出现次数为1的字符,并输出其位置。
以下是实现该功能的Python代码:
```python
def find_first_unique_char(s):
char_count = {}
char_index = {}
for i, c in enumerate(s):
if c in char_count:
char_count[c] += 1
else:
char_count[c] = 1
char_index[c] = i
for c in s:
if char_count[c] == 1:
return char_index[c]
return -1
```
调用示例:
```python
s = "abaccdeff"
print(find_first_unique_char(s)) # 输出 1
```
如果字符串中没有只出现一次的字符,则会返回-1。
相关问题
给定一个字符串和长度为n的字符串,找到其中第一个不重复的字符并返回其索引。如果不存在,则返回-1
好的,您的问题是:给定一个字符串和长度为n的字符串,找到其中第一个不重复的字符并返回其索引。如果不存在,则返回-1。
我可以给您提供一个Python的解法,代码如下:
```
def firstUniqChar(s: str) -> int:
# 构建哈希表
char_dict = {}
for char in s:
if char in char_dict:
char_dict[char] += 1
else:
char_dict[char] = 1
# 查找第一个不重复的字符
for i in range(len(s)):
if char_dict[s[i]] == 1:
return i
return -1
```
这个算法的时间复杂度是O(n),因为我们需要扫描整个字符串。我们使用一个哈希表来存储每个字符出现的次数,然后再次遍历字符串,找到第一个出现次数为1的字符。
如果您有任何疑问,请随时告诉我。
C语言 输入n个字符串,每一个串长度不超过40,将这些字符串连接在一起,输出
你可以使用C语言的字符串处理函数`strcat()`将每个字符串连接起来,最终输出结果即可。
以下是一个示例代码:
```c
#include <stdio.h>
#include <string.h>
#define MAX_LENGTH 40
int main() {
int n;
printf("请输入字符串个数:");
scanf("%d", &n);
char strings[n][MAX_LENGTH + 1]; // 数组存储输入的字符串
char result[MAX_LENGTH * n + 1]; // 存储连接后的结果
result[0] = '\0'; // 初始化为空字符串
printf("请输入%d个字符串:\n", n);
for (int i = 0; i < n; i++) {
scanf("%s", strings[i]);
strcat(result, strings[i]); // 连接字符串
}
printf("连接后的结果为:%s\n", result);
return 0;
}
```
注意,`strcat()`函数将第二个字符串连接到第一个字符串的末尾,因此需要在使用`strcat()`函数前,将第一个字符串初始化为空字符串。同时,连接后的结果需要开辟足够的空间来存储,这里我们采用了一个大小为`MAX_LENGTH * n + 1`的字符数组来存储。