第一个只出现一次的字符

题目描述

在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置

分析

遍历一遍字符串,用counts数组存储每个字母出现的次数。str.charAt[i] - 'A'作为该字母在counts数组中的下标。数组大小为58(’A’的ASCLL码为65 ‘a’为97 ‘z’为122 122-65+1=58)

代码:

public class Solution {
public int FirstNotRepeatingChar(String str) {
if (str.length() == 0) {
return -1;
}
char c = 'A';
int[] counts = new int[58];
for (int i = 0; i < str.length(); i++) {
counts[str.charAt(i) - c]++; //这里比较巧妙
}
for (int i = 0; i < str.length(); i++) {
if (counts[str.charAt(i) - c] == 1){
return i;
}
}
return -1;
}
}

欢迎关注公众号: FullStackPlan 获取更多干货

Copyright © 2016 - 2017 LBD All Rights Reserved.

访客数 : | 访问量 :