1. 程式人生 > 其它 >【劍指offer較難部分16】第一個只出現一次的字元(java)

【劍指offer較難部分16】第一個只出現一次的字元(java)

技術標籤:劍指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; } }

在這裡插入圖片描述