📅  最后修改于: 2023-12-03 15:27:24.808000             🧑  作者: Mango
在字符串中找到第一个不重复的字符并返回其索引。如果不存在,则返回 -1。
我们可以通过使用哈希表来解决这个问题。我们可以使用字符作为键和出现次数作为值。然后,我们遍历字符串并在哈希表中添加每个字符和它们的计数。最后,我们再次遍历字符串并找到第一个计数为 1 的字符并返回其索引。
时间复杂度:O(n),其中 n 是字符串的长度。 空间复杂度:O(1)。
以下是一个Java函数,该函数采用上述算法并返回第一个不重复的字符的索引。
public static int firstUniqChar(String s) {
int[] count = new int[26];
// 计算每个字符的出现次数
for (int i = 0; i < s.length(); i++) {
count[s.charAt(i) - 'a']++;
}
// 找到第一个计数为 1 的字符并返回其索引
for (int i = 0; i < s.length(); i++) {
if (count[s.charAt(i) - 'a'] == 1) {
return i;
}
}
return -1;
}
String s = "leetcode";
int result = firstUniqChar(s);
System.out.println(result); // 输出 0
s = "loveleetcode";
result = firstUniqChar(s);
System.out.println(result); // 输出 2
本文中,我们介绍了如何使用哈希表来解决字符串中第一个不重复字符的问题。我们学习了字符串遍历和计数以及如何在哈希表中存储和访问键值对。我们还给出了一个Java代码示例,以帮助您更好地了解如何实现我们提出的算法。