1. 程式人生 > >【leetcode】字串中的第一個唯一的字元

【leetcode】字串中的第一個唯一的字元

題目要求

  • 給定一個字串,找到它的第一個不重複的字元,並返回它的索引,如果不存在,則返回-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")); } }