您的位置:首页 > 其它

算法---在一个字符串中找到第一个只出现一次的字符

2011-06-13 09:18 453 查看
在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。思路如下:利用类似的Hash的索引来找到结果定义一个定长的Hash结构数组,字符作为HashKey,出现一次则Hash数组自增1,这样只要第一个Hash[i] = 1即可判断此为所要找的结果。

算法如下:

/// <summary>
/// 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
/// </summary>
/// <param name="ch">目标char数组</param>
/// <returns></returns>
char Test(char[] ch)
{
if(ch == null) return '/0';

const int tableSize = 256;
int[] hashTable = new int[tableSize];
//初始化Hash
for (int i = 0; i < tableSize; i++)
{
hashTable[i] = 0;
}

//字符作为HashKey,出现一次自增1
char[] pHashKey = ch;
int temp = 0;
foreach (char c in pHashKey)
{
temp = Convert.ToInt32(c);
hashTable[temp]++;
}

//找到结果
for (int j = 0; j < hashTable.Length; j++)
{
if (hashTable[j] == 1)
return (char)j;
}

return '/0';
}


算法清晰、简洁。

结束。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐