字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
s = "leetcode" 返回 0.
s = "loveleetcode", 返回 2.
注意事项:您可以假定该字符串只包含小写字母。
class Solution {
public int firstUniqChar(String s) {
int index=-1;
for(char c='a';c<='z';c++){
int indexBegin=s.indexOf(c);
if(indexBegin!=-1 && indexBegin==s.lastIndexOf(c)){
if(index==-1 || index>indexBegin){
index=indexBegin;
}
}
}
return index;
}
}
解析:用Java自带的API来查找首次出现的字母和最后一次出现的字母,如果相同则说明此字母只出现了一次,如果出现了下标比之前index更小的,说明就更加到String s字符串前面的字符,就把这个下标去代替之前给到index的。
之前我自己的解法是按照字符串的顺序从0到s.length,依次去对比.
for (int i = 0; i < ss.length; i++) {
boolean sign = true;
for (int j = 0; j < ss.length; j++) {
if (i != j && ss[i] == ss[j]) {
sign = false;
break;
}
}
if (sign) {
return i;
}
}
这种写法要把所有的情况都要想到,以及字符串String s为空和只有一个字符的情况。速度很慢并且比较复杂。