public static char FindFirstNoRepeat(string input)
{
if(input !=null)
{
int[] counter = new int[256];
foreach(var c in input)
{
counter[c]++;
}
foreach(var c in input)
{
if(counter[c] == 1)
{
return c;
}
}
throw new Exception("没有找到只出现一次的字符");
}
throw new ArgumentNullException("字符串不能为空");
}
static void Main(string[] args)
{
string input = "total";
var r = FindFirstNoRepeat(input);
Console.WriteLine(r);
Debug.Assert(r == 'o', "total 中第一个不重复的字符是 o");
try
{
r = FindFirstNoRepeat("woow");
Debug.Assert(false, "字符串 woow 中没有不重复的字符");
}
catch (Exception e)
{
Debug.Assert(true);
}
}
欢迎大家关注我的公众号,还有我的系列视频教程, 数据结构与算法 和 微软经典算法面试题辅导。大家有什么更好的解法,也欢迎讨论哈。