《剑指offer》JZ34第一个只出现一次的字符

    技术2022-07-11  90

    在一个字符串(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;     } }

    Processed: 0.020, SQL: 9