题目
给定一个字符串,找出其中只出现过一次的字符位置,如果有多个字符满足条件则输出第一个字符的位置,如果没有满足条件的字符则输出-1。
示例:
输入:
“abaccdeff”
输出:
1
思路
- 维护一个大小为256的数组(常用字符范围为/u0000-/u007f),遍历时对应的数组元素+1。
- 第二次遍历时只需要找出数组中值为1的字符,返回其在字符串中的下标即可。
代码
public class Solution {
public int indexOfFirstChar(String str){
if(str==null||str.length()==0)
return -1;
int[] cnts = new int[256];
for(int i=0;i<str.length();i++)
cnts[str.charAt(i)]++;
for(int i=0;i<str.length();i++)
if(cnts[str.charAt(i)]==1)
return i;
return -1;
}
}