在一個字串中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫)
題目:在一個字串(0<=字串長度<=10000,全部由字母組成)中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).
思路:建立資料結構HashMap,可以記錄每個字元對應出現的次數,之後遍歷字串,將對應的值儲存在HashMap中,遍歷完字串後,對應字元的出現的次數也被儲存,然後再次遍歷字串,找出HashMap中對應的次數,若為1,則返回對應位置。具體程式碼實現如下所示:
import java.util.HashMap;
public class Solution { public int FirstNotRepeatingChar(String str) { HashMap<Character,Integer> mp=new HashMap<>(); if(str==null){ return -1; } for(int i=0;i<str.length();i++){ if(mp.containsKey(str.charAt(i))){ int value=mp.get(str.charAt(i)); mp.put(str.charAt(i),value+1); }else{ mp.put(str.charAt(i),1); } } for(int j=0;j<str.length();j++){ if(mp.get(str.charAt(j))==1){ return j; } } return -1; } }