题目链接:点击打开链接
思路:关键点就是用一个容量是26的数组来记录每个字母出现的次数。下标0-25分别映射到a-z。
java参考代码如下:
public class Solution { public int firstUniqChar(String s) { // 使用一个容量为26的数组,使用下标0-25来映射a-z int[] count = new int[26]; // 遍历输入的string,以 在当前字符所映射到的数字 为下标,对应下标存放的值+1 for(int i=0; i<s.length(); i++){ // 将当前字符转化为整数下标 int index = s.charAt(i) - 'a'; count[index] ++; } // 遍历string,对于当前字符,查看它所对应到的cout数组中的值是否为1, // 是1则表示没有重复出现,返回它,程序结束;否则继续 for(int i=0; i<s.length(); i++){ // 将当前字符转化为整数下标 int index = s.charAt(i) - 'a'; if(count[index] == 1){ return i; } } return -1; }}
新闻热点
疑难解答