1. 程式人生 > >在一個字串中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫)

在一個字串中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -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;     } }