演算法-First Unique Character in a String-字串中的第一個唯一字元
1、題目描述
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。
示例:
s = "leetcode"
返回 0
s = "loveleetcode"
返回 2
2、題目分析
- 與以往的題目不同,這個是找唯一的字元,那就需要遍歷完成之後再二次遍歷
- 首先考慮使用HashMap,再考慮使用字典
- 第一次遍歷統計各個字元出現的次數,第二次遍歷找僅出現一次的那個字元
3、程式碼實現
public int firstUniqChar1(String s) {
Map<Character,Integer> map = new HashMap<>();
//統計出現次數
for(int i = 0;i < s.length();i++){
map.put(s.charAt(i),map.getOrDefault(s.charAt(i),0) + 1);
}
//找第一個出現的唯一元素下標
for(int i = 0;i < s.length();i++){
if(map.get(s.charAt(i)) == 1){
return i;
}
}
return -1;
}
//使用字典能降低時間和空間複雜度
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;
}
4、複雜度分析
- 時間複雜度:O(N) 兩次遍歷
- 空間複雜度:O(∣Σ∣) 最多儲存26個不重複字元
相關文章
- LeetCode初級演算法之字串:387 字串中的第一個唯一字元LeetCode演算法字串字元
- leedcode-字串中的第一個唯一字元字串字元
- 1202-字串中的第一個唯一字元字串字元
- 387. 字串中的第一個唯一字元字串字元
- LeetCode-387-字串中的第一個唯一字元LeetCode字串字元
- LeetCode 387. 字串中的第一個唯一字元 (Java)LeetCode字串字元Java
- 力扣題解-387. 字串中的第一個唯一字元力扣字串字元
- 【leetcode 簡單】 第九十題 字串中的第一個唯一字元LeetCode字串字元
- LeetCode C++ 387. First Unique Character in a String【String/Hash Table】簡單LeetCodeC++
- Python字串刪除第一個字元常用的方法!Python字串字元
- 字元流中第一個不重複的字元字元
- 查詢字串中第一個非重複字元的3種方法字串字元
- 劍指Offer 字元流中第一個不重複的字元字元
- Swift 字元(Character)講解Swift字元
- Python中查詢字串某個字元最常用的方法!Python字串字元
- PHP 判斷一個字元是否在字串中PHP字元字串
- 將字串每一個單詞第一個字元設定為大寫字串字元
- 2.刪除字串中的某個字元。(藉助字元陣列實現)字串字元陣列
- 統計字串字元個數字串字元
- 獲得String字串中某個字元出現的次數字串字元
- JavaScript刪除字串中的指定字元JavaScript字串字元
- PHP獲取字串中的某個字元:採用陣列的方式PHP字串字元陣列
- 得到字串 位元組 長度 中文 兩個字元 英文一個字元字串字元
- 寫個方法,找出指定字串中重複最多的字元及其長度字串字元
- EXCEL擷取某一列從第一個字元開始到特定字元結束的字串到新的一列Excel字元字串
- 字串和字元的操作字串字元
- C#移除字串中的不可見Unicode字元C#字串Unicode字元
- 獲取一個字串中出現最多的字元和他的個數字串字元
- 1374 生成每種字元都是奇數個的字串字元字串
- JavaScript刪除字串中重複字元JavaScript字串字元
- 獲取字串中重複次數最多的字元字串字元
- 在 SQL Server 中,建立表時可以直接為欄位新增唯一約束(UNIQUE)SQLServer
- 程式碼隨想錄演算法訓練營第9天 | 字串(KMP演算法) 28. 找出字串中第一個匹配項的下標 459.重複的子字串演算法字串KMP
- 判斷字串是否唯一字串
- 求出現在字串1而沒有出現在字串2中的字元字串字元
- 輸入一段字串,去除字串中重複的字元,並輸出字串字元
- 字串-字元編碼字串字元
- C#刪除字串最後一個字元C#字串字元