在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)
解析:利用ASCII码;第一次完整遍历;第二次只需遍历到第一个只出现一次的字符
代码:
public class Solution { public int FirstNotRepeatingChar(String str) { //由ASCII表可得:A~z,一共是65~122; //所以建一个68的数组 int[] arr = new int[68]; //将字符串转换为字符数组 char[] strArr = str.toCharArray();
//根据ASCII存储 for(int i = 0; i < str.length(); i++){ arr[strArr[i] - 'A']++; } for(int i= 0; i < str.length(); i++){ if(arr[strArr[i]- 'A'] == 1){ return i; } } return -1; } }