怎么办网站平台,专门做外贸网站有哪些,物流公司在哪里找,东莞东坑网站建设剑指Offer_编程题——第一个只出现一次的字符题目描述#xff1a;在一个字符串(0字符串长度10000#xff0c;全部由字母组成)中找到第一个只出现一次的字符#xff0c;并返回它的位置#xff0c;如果没有则返回-1#xff0c;需要区分大小写。(从0开始计数)。具体要…剑指Offer_编程题——第一个只出现一次的字符题目描述在一个字符串(0字符串长度10000全部由字母组成)中找到第一个只出现一次的字符并返回它的位置如果没有则返回-1需要区分大小写。(从0开始计数)。具体要求时间限制 C/C 1秒其他语言2秒空间限制 C/C32M其他语言64M具体思路思路一这道题刚开始感觉特别简单可以用最简答、最粗暴的方法就可以解决结果发现其实是错的其实我们可以用python中的字典只要定义一个字典即可将问题简单化。我们只需要把这些数字存在字典里然后遍历整个字符串如果i在count里则count1否则将count置为1.重新遍历该字符串这时候我们用到了 Python中的enumerate函数在判断count是否为1如果匹配成功则返回该下标。具体我们用python实现该思路class Solution:def FirstNotRepeatingChar(self, s):if s :return -1else:count {}for i in s:if i in count:count[i] 1else:count[i] 1for index, i in enumerate(s):if count[i] 1:return index代码效果图如图所示思路二这道题其实可以用hashcode来解决。利用每个字母的ASCII码作hash来作为数组的index。首先用一个58长度的数组来存储每个字母出现的次数为什么是58呢主要是由于A-Z对应的ASCII码为65-90a-z对应的ASCII码值为97-122而每个字母的indexint(word)-65比如g103-6538而数组中具体记录的内容是该字母出现的次数最终遍历一遍字符串找出第一个数组内容为1的字母就可以了时间复杂度为O(n)。具体用java实现该思路public class Solution{public int FirstNotRepeatingChar(String str){int[] words new int[58];for(int i 0; i str.length(); i){words[(int)str.charAt(i) - 65] 1;}for(int i 0; i str.length(); i){if(words[(int)str.charAt(i) - 65] 1)return i;}return -1;}
}代码效果图如图所示总结本道题主要考察字符串中字符出现的次数刚开始想当然了结果发现简单、粗暴的做法根本行不通因此转变了思路用到了python中的字典以及java中的hashcode可以利用ASCII码作为index总体来说该题还是挺简单的。因此我们在做题的时候应该多次尝试各种方法扩展自己的思维写出优质的代码。总之我们要继续加油争取早日找到工作Good Luck参考文献[1]杨二K[2]zyp7355