最近在刷leetcode的时候,刷多了,发现了这类关于字符串题目解法的一个统一性。通常我们定义一个长度为26的数组,来存储26的字母依次对应的值。
比如这道题,让我们找出第一个不重复的字符,我们可以先遍历字符串s ,用字符串中的每一个字符减去‘a’,这样得到一个差值,存到数组中,在字符串后面的字符如果有跟前面相同的字符,同样的数组中的位置不变,让其加一,这样我们便知道字符串中每个字符的个数,然后再次遍历字符串,如果发现第一个个数为1的字符,就是我们要找的位置。
class Solution{
public int firstUniqChar(String s) {
int [] result=new int[26];
for(int i=0;i<s.length();i++){
result[s.charAt(i)-'a']++;
}
for(int j=0;j<s.length();j++)
{
if(result[s.charAt(j)-'a']==1) return j;
}
return -1;
}
}