剑指Offer_34_找出字符串中第一个只出现一次的字符
题目描述
找出字符串中第一个只出现一次的字符
详细描述:
接口说明
原型:
bool FindChar(char* pInputString, char* pChar);
输入参数:
char* pInputString:字符串
输出参数(指针指向的内存区域保证有效):
char* pChar:第一个只出现一次的字符
如果无此字符 请输出'.'
输入描述:
输入一串字符,由小写字母组成
输出描述:
输出一个字符
输入例子:
asdfasdfo
输出例子:
o
解题思路
扫描字符串,利用HashMap保存字符及出现次数,最后找到第一出现一次的字符。
实现
import java.util.*;
public class Solution {
public int FirstNotRepeatingChar(String str) {
if (str == null || str.length() <=0) return -1;
HashMap<Character, Integer> charNums = new HashMap<Character, Integer>();
for (char c : str.toCharArray()) {
if (!charNums.containsKey(c)){
charNums.put(c,1);
}else {
charNums.put(c,charNums.get(c)+1);
}
}
for (int i = 0; i < str.length(); i++){
if (charNums.get(str.charAt(i)) == 1){
return i;
}
}
return -1;
}
}