您的位置:首页 > 编程语言 > Java开发

[Leetcode] 387. 字符串中的第一个唯一字符 java hashmap与ASCII码

2018-11-12 13:41 357 查看

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

案例:

[code]s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

注意事项:您可以假定该字符串只包含小写字母。

第一种方法(hashmap略慢)

[code]class Solution {
public int firstUniqChar(String s) {
HashMap<Character,Integer> map=new HashMap<Character,Integer>();
if(s==null) return -1;
for(int i=0;i<s.length();i++){//把s的元素放进哈希表。该字符出现几次,value就等于几
if(map.containsKey(s.charAt(i))) map.put(s.charAt(i),map.get(s.charAt(i))+1);
else{
map.put(s.charAt(i),1);
}
}
for(int i=0;i<s.length();i++){
if(map.get(s.charAt(i))==1) return i;//找到等于1的,马上返回
}
return -1;
}
}

第二种方法(ASCII码 稍快)

[code]class Solution {
public int firstUniqChar(String s) {
int count[]=new int[26];//初始化数组,用来存放字符重复次数
for(int i=0;i<s.length();i++){
count[s.charAt(i)-'a']++;
}
for(int i=0;i<s.length();i++){
if(count[s.charAt(i)-'a']==1) return i;
}
return -1;
}
}

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐