题目描述
在字符串中找到第一个只出现一次的字符,如输入”google”, 则输出’l’。
解题思路
- 使用hash表结构,因为ASC字符共有256位,建立
hashTable[256]
。 - 第一次遍历字符串,计算当前字符应当在
hashTable[256]
中的位置,并且从0
开始自增相应位置的数据。 - 第二次遍历,找到第一个只有单个字符的位置。
Java实现
public class Solution {
public int FirstNotRepeatingChar(String str) {
if (str == null || str.length() == 0)
return -1;
//还是写一个256 ASC编码的hash表
int[] hashTable = new int[256];
for (int i = 0; i < hashTable.length; i++)
hashTable[i] = 0;
for (int i = 0; i < str.length(); i++)
hashTable[str.charAt(i)]++;
for (int i = 0; i < str.length(); i++)
if (hashTable[str.charAt(i)] == 1)
return i;
return -1;
}
}