刚开始做的时候,我是直接通过x.toCharArray()获取字符数组,接着通过两层循环遍历比较,但是这样写虽然能够通过但是效率太低了,查看了一下结果这种写法是在提交结果中垫底的。
所以我就去查了一下源码找找突破。因为源码中String又一个contains()方法,contains()则是调用的另外一个indexof()方法。就一下子让我想起了indexof()跟lastIndexOf()。
解决方法如下:
通过获取indexOf和lastIndexOf()的值进行对比,如果两个值一样说明该字符是唯一字符。
class Solution {
public int firstUniqChar(String s) {
char[] temp=s.toCharArray();
for(int i=0;i<temp.length;i++){
int a=s.indexOf(temp[i]);
int b=s.lastIndexOf(temp[i]);
if(a==b)return i;
}
return -1;
}
}
这样写虽然执行效率高了一点但是仅仅是在提交结果的中游。
并且对于题中的注意事项我并没有理会,感觉这个应该是一个效率突破口,但是并没有什么头绪!!!