剑指offer第34题(c#)

剑指offer第34题(c#)

题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

这道算法题不是很难,稍微理解一下就能想到很多方法(主要今天在unity花的时间太多没精力做高难度的算法题了凑合一下更新),我使用的是哈希表思想来解题,利用字典的操作来记录下每个只出现一次字母的位置,把出现过多次的字母键值赋值为-1这样的话只要值不是-1的字典就是只出现过一次的字母,因为我的字典是从字符串中第一个字符一直查询到最后一个字符所以我只需要把字典中第一个记录下来的字典值为正值的这个数返回就可以了。好了上代码:
下面展示一些 内联代码片

    public int FirstNotRepeatingChar(string str)
    {
    
    
        // write code here
        Dictionary<char, int> res = new Dictionary<char, int>();//新建字典
        for(int i=0 ; i<str.Length ; i++)
        {
    
    
            if(res.ContainsKey(str[i])==false)
                res.Add(str[i],i);//如果字典中没有存储过的则
                //添加到字典中去,值为该字母第一次出现的位置
            else
                res[str[i]]=-1;//如果出现过多次的话则将该键值改为-1便于识别
        }
        foreach(char j in res.Keys)
        {
    
    
            if(res[j]>=0)
                return res[j];
        }//遍历一次字典将第一个不是-1的键值返回
        return -1;
    }

这段时间一直在学也在投简历,学的越多越觉得自己不足的地方更多,但是也很欣慰自己确确实实懂了很多,在开学的时候对于算法和unity的使用以我现在的角度来看简直就是一个菜得不能再菜的小白了。之所以想写博客也算是记录自己在这么重要的时间段里学习成长的点点滴滴吧,也希望能够给以后的游戏开发萌新和有这方面想法的学弟学妹们留下一点经验和方法。

猜你喜欢

转载自blog.csdn.net/weixin_50746193/article/details/116769408