问题
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3939 访问。
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
s = "leetcode",返回 0.
s = "loveleetcode",返回 2.
注意事项:您可以假定该字符串只包含小写字母。
Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.
s = "leetcode",return 0.
s = "loveleetcode",return 2.
Note: You may assume the string contain only lowercase letters.
示例
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3939 访问。
public class Program {
public static void Main(string[] args) {
var s = "loveleetcode";
var res = FirstUniqChar(s);
Console.WriteLine(res);
Console.ReadKey();
}
private static int FirstUniqChar(string s) {
var dic = new Dictionary<int, int>();
for(var i = 0; i < s.Length; i++) {
if(dic.ContainsKey(s[i])) {
dic[s[i]]++;
} else {
dic[s[i]] = 1;
}
}
for(var i = 0; i < s.Length; i++) {
if(dic[s[i]] == 1) return i;
}
return -1;
}
}
以上给出1种算法实现,以下是这个案例的输出结果:
该文章的最新版本已迁移至个人博客【比特飞】,单击链接 https://www.byteflying.com/archives/3939 访问。
2
分析:
显而易见,以上算法的时间复杂度为: 。
本文介绍了一种算法,用于在给定字符串中查找并返回第一个不重复字符的索引。通过遍历字符串,使用字典记录每个字符出现的次数,再次遍历时找出第一个出现次数为一的字符。该算法适用于仅含小写字母的字符串。

被折叠的 条评论
为什么被折叠?



