《劍指office》第一個只出現一次的字符


題目描述
在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置
思路:
爲了解決這個問題,我們可以定義一個有序哈希表(外部空間),其鍵值(Key)是字符,當哈希標準沒有該字符時值(Value)是該字符出現的位置索引,當哈希表中已經有該字符時,把值(Value)設爲字符的長度。
掃描結束後取出第一個值(Value)小於字符長度的值就是問題的解。
代碼:
import java.util.*;
public class Solution {
    public int FirstNotRepeatingChar(String str) {
        if(str.length()==0){
            return -1;
        }
        Map<Character,Integer> map = new LinkedHashMap<Character,Integer>();
        int temp = 0;
        for(int i=0;i<str.length();i++){
            if(!map.containsKey(str.charAt(i))){
                map.put(str.charAt(i),i);
            }
            else{
                map.put(str.charAt(i),i+10000);
            }
        }
        Set<Character> keySet = map.keySet();
        for(Iterator<Character> it = keySet.iterator(); it.hasNext();)  
        {  
            char key = it.next();
            int value = map.get(key);
            if(value<10000){
                temp = value;
                break;
            }
        }
        return temp;
    }
}


發佈了37 篇原創文章 · 獲贊 80 · 訪問量 4008
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章