码迷,mamicode.com
首页 > 其他好文 > 详细

第一个只出现一次的字符

时间:2015-09-15 16:19:33      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:

如果不考虑时间复杂度,则较简单的算法为:

        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;
        }

 

第一个只出现一次的字符

标签:

原文地址:http://www.cnblogs.com/laixiancai/p/4810454.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!