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;
}
}
《劍指office》第一個只出現一次的字符
題目描述
在一個字符串(1<=字符串長度<=10000,全部由字母組成)中找到第一個只出現一次的字符,並返回它的位置
思路:
爲了解決這個問題,我們可以定義一個有序哈希表(外部空間),其鍵值(Key)是字符,當哈希標準沒有該字符時值(Value)是該字符出現的位置索引,當哈希表中已經有該字符時,把值(Value)設爲字符的長度。
掃描結束後取出第一個值(Value)小於字符長度的值就是問題的解。
代碼:
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.