一、题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,
并返回它的位置, 如果没有则返回
-1(需要区分大小写).
二、解题思路
利用哈希思想,映射到数组中
三、java代码
public class Solution_35 {
/**
* 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,
* 并返回它的位置, 如果没有则返回
* -1(需要区分大小写).
*/
//利用哈希思想,映射到数组中
@SuppressWarnings("unused")
public static int FirstNotRepeatingChar(String str) {
if(str==null||str.equals("")||str.length()<=0){
return -1;
}
int[] records = new int[256]; //char可以表示字符大小范围是-128到127
for(int i = 0;i<str.length();i++){
records[str.charAt(i)]++;
}
for(int i=0;i<str.length();i++){//先找出第一次出现的位置,如果没有直接返回-1,如果有再执行下一个循环找出位置
char resChar = str.charAt(i);
if(records[resChar]==1) {
return i;
}
}
return -1;
}
public static void main(String[] args) {
String[] strings = {
"abcdefg", //a
"aagbcdef", //g
"aabccdbd", //不存在
null
};
for (String s : strings)
{
int result = FirstNotRepeatingChar(s);
System.out.println(result);
}
System.err.println(FirstNotRepeatingChar("aabjcdef"));
}
}