您的位置:首页 > 其它

第一个只出现一次的字符

2015-09-15 15:37 302 查看
如果不考虑时间复杂度,则较简单的算法为:

private static string FirstNotRepeatingChar1(string str)
{
for (int i = 0; i < str.Length; i++)
{
if (str.IndexOf(str.ElementAt(i)) == str.LastIndexOf(str.ElementAt(i)))
{
return str.ElementAt(i).ToString();
}
}
return string.Empty;
}


如果要求时间复杂度为O(n),则可以参考下面的一种实现:

private static char FirstNotRepeatingChar2(string str)
{
if (string.IsNullOrEmpty(str))
{
return '\0';
}

char[] array = str.ToCharArray();
const int size = 256;
// 借助数组来模拟哈希表,只用1K的空间消耗
uint[] hastTable = new uint[size];
// 初始化数组
for (int i = 0; i < size; i++)
{
hastTable[i] = 0;
}

for (int i = 0; i < array.Length; i++)
{
hastTable[array[i]]++;
}

for (int i = 0; i < array.Length; i++)
{
if (hastTable[array[i]] == 1)
{
return array[i];
}
}

return '\0';
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: