2017年12月16日 星期六

[LeetCode] 387. First Unique Character in a String

轉自LeetCode

Given a string, find the first non-repeating character in it and return it's index. If it doesn't exist, return -1.
Examples:
s = "leetcode"
return 0.

s = "loveleetcode",
return 2.
Note: You may assume the string contain only lowercase letters.
<Solution>

這題是要找沒有重複的字元中,在 string 中第一個出現的

第一種想法
  • 準備一個 hash map,記錄所有字元出現的次數
  • 按順序去歷遍 string,找到第一個出現次數為1的字元所在的 index
code 如下

C++

第二種想法(參考資料),會更快一點
  • 用兩個指針,指針 cur 指在目前出現次數為1的字元,另一個指針 next 往前找
  • 如果 next 指針有更新到 cur 指針指的字元,那麼將 cur 指到下一個出現次數為1的字元
  • 如果 cur 指針已經指到尾了,那麼就回傳 -1
code 如下

C++

沒有留言:

張貼留言