【leetcode】字串中的第一個唯一的字元
阿新 • • 發佈:2018-12-23
題目要求
- 給定一個字串,找到它的第一個不重複的字元,並返回它的索引,如果不存在,則返回-1;
- 案例:
s = “leetcode”
返回 0.
s = “loveleetcode”
返回 2. - 注意事項:可以假定該字串只包含小寫字母
核心思想
很簡單的思路,就是用字串來遍歷查詢。這個在做的過程有一個小錯誤,就是沒有定義int[26]的陣列,這樣在驗證字串類似"aaabba"時就會產生返回值錯誤,後來又查看了別人部落格得到的解答。另外還可用hashmap來做。
完整程式碼如下
/**
* 題目:字串中第一個唯一的字元
* 給定一個字串,找到它的第一個不重複的字元,並返回它的索引,如果不存在,則返回-1;
* 案例:
* s = "leetcode"
* 返回 0.
* s = "loveleetcode"
* 返回 2.
* 注意事項:可以假定該字串只包含小寫字母
*
*/
public class Solution {
public static int FirstUniqChar(String s) {
int[] a = new int[26];
char[] ch = s.toCharArray();
for(int i = 0; i < s.length(); i++) {
a[(int)(ch[i]-'a')]++;
}
for(int i = 0; i < s.length(); i++) {
if(a[(int)(ch[i]-'a')] == 1)
return i;
}
return -1;
}
public static void main(String[] args) {
System.out.println(Solution.FirstUniqChar("leetcode"));
System.out.println(Solution.FirstUniqChar("loveleetcode"));
}
}