第一個獨特字符位置 · first position unique character
阿新 • • 發佈:2018-02-17
pen 其他 正常 ram 復雜 character ring gif nbsp
[抄題]:
給出一個字符串。找到字符串中第一個不重復的字符然後返回它的下標。如果不存在這樣的字符,返回 -1
。
給出字符串 s = "lintcode"
,返回 0
。
給出字符串 s = "lovelintcode"
,返回 2
。
[暴力解法]:
時間分析:
空間分析:
[思維問題]:
[一句話思路]:
用cnt[256]數組存儲即可
[輸入量]:空: 正常情況:特大:特小:程序裏處理到的特殊情況:異常情況(不合法不合理的輸入):
[畫圖]:
[一刷]:
不用break,因為有一個值可行時,int函數就直接返回了
[二刷]:
[三刷]:
[四刷]:
[五刷]:
[五分鐘肉眼debug的結果]:
[總結]:
[復雜度]:Time complexity: O(n) Space complexity: O(n)
[英文數據結構或算法,為什麽不用別的數據結構或算法]:
用數組存儲字母,所謂的hash
[其他解法]:
[Follow Up]:
[LC給出的題目變變變]:
451. Sort Characters By Frequency 也是用256數組,再用heap排序
[代碼風格] :
public class Solution { /** * @param s: a string * @return: it‘s index */ public intView CodefirstUniqChar(String s) { //corner case if (s == null) { return 0; } //put into cnt[] char[] c = s.toCharArray(); int[] cnt = new int[256]; for (int i = 0; i < s.length(); i++) { cnt[c[i]]++; } //return for(int i = 0; i < s.length(); i++) { if (cnt[c[i]] == 1) { return i; //break; } } return -1; } }
第一個獨特字符位置 · first position unique character