【劍指offer較難部分16】第一個只出現一次的字元(java)
阿新 • • 發佈:2021-01-15
技術標籤:劍指offer(java)字串java
題目描述
在一個字串(0<=字串長度<=10000,全部由字母組成)中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).(從0開始計數)
分析
思路:由以往寫的題,第一可以想到用HashMap,key為字元,val為其出現次數,get方法能直接獲取到val,最後判斷次數是否為1即可,是則返回
分兩步:
1、遍歷字串,統計字元出現次數
2、遍歷原字串並get其val值,判斷是否等於1
import java.util.Map;
import java.util.HashMap;
public class Solution {
public int FirstNotRepeatingChar(String str) {
if(str == null || str.length() == 0){
return -1;
}
Map<Character, Integer> map = new HashMap<>();
//1、遍歷字串,統計字元出現次數
for(int i = 0 ; i < str.length() ; i++){
Character ch = str.charAt(i);//ch為Character物件
Integer val = map.get(ch);//val為Integer物件
if(val == null){
map.put(ch, 1);
}else{
map.put(ch, val+1);
}
}
//2、遍歷原字串並get其val值,判斷是否等於1
for(int j = 0 ; j < str.length() ; j++ ){
if(map.get(str.charAt(j)) == 1){
return j;
}
}
return -1;
}
}