LeetCode刷題——字串中的第一個唯一字元
大家好,結束了五一假期,繼續刷題日記。本次題目要求如下:
我的思路是這樣的:
首先計算出s的長度並將s複製給一個字串cont,進入while迴圈,知道字串s為空,使用.find()函式尋找字串裡是否有與s[0]相同的字元若有,使用remove函式把所有與s[0]相同的字元包括s[0]移到字串尾部,並用erase刪除掉這些字元。若沒有,則使用.find尋找這個字元在cont中對應的下標i並返回i。迴圈結束返回-1.
程式碼如下:
class Solution { public: int firstUniqChar(string s) { int len = s.size(); string cont = s; int num; int i = 0; while(s.size() > 0){ num = s.find(s[0], 1); if (num < 0){ i = cont.find(s[0]); return i; } else{ const char p = s[0]; s.erase(remove(s.begin(), s.end(), p), s.end()); } } return -1; } };
但是有一個問題,這樣執行下去效率不是很高,在網上看到一個更簡單的方法:
首先統計字串中26個字母的個數,然後在個數為1的字母中找下標最小的返回其下標,如果沒有個數為1的,返回-1。程式碼如下:
class Solution { public: int firstUniqChar(string s) { int n=s.size(); if(n==0) return -1; int a[26]={0}; for(int i=0;i<n;i++){ a[s[i]-'a']++; } for(int i=0;i<n;i++) { if(a[s[i]-'a']==1) return i; } return -1; } };
通過這道題學習到的地方有:
1.
C++要從字串中刪除所有某個特定字元, 可用如下程式碼:
str.erase(std::remove(str.begin(), str.end(), 'a'), str.end());
他是將str中所有的a移到字串的末尾並返回一個新的end,這個end就是不包含a的新字串的末尾的下一位,我們再用erase將這個新的end到字串原始end之間的字元刪掉,就是刪掉了字串中所有的a。
2.很多時候,在可以假設有限變數時用陣列會更加方便。
好了,我們下期見!
相關推薦
【LeetCode 簡單題】85-字串中第一個唯一字元
宣告: 今天是第85道題。給定n,從 1 到 n 選擇一個數字。 你需要猜我選擇了哪個數字。以下所有程式碼經過樓主驗證都能在LeetCode上執行成功,程式碼也是借鑑別人的,在文末會附上參考的部落格連結,如果侵犯了博主的相關權益,請聯絡我刪除 (手動比心ღ( ´・ᴗ・`
LeetCode刷題——字串中的第一個唯一字元
大家好,結束了五一假期,繼續刷題日記。本次題目要求如下:我的思路是這樣的:首先計算出s的長度並將s複製給一個字串cont,進入while迴圈,知道字串s為空,使用.find()函式尋找字串裡是否有與s[0]相同的字元若有,使用remove函式把所有與s[0]相同的字元包括s[
LeetCode——第387題:字串的第一個唯一字元
題目: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返
C#LeetCode刷題之#278-第一個錯誤的版本(First Bad Version)
問題 你是產品經理,目前正在帶領一個團隊開發新的產品。不幸的是,你的產品的最新版本沒有通過質量檢測。由於每個版本都是基於之前的版本開發的,所以錯誤的版本之後的所有版本都是錯的。 假設你有 n 個版本 [1, 2, ..., n],你想找出導致之後所有版本出錯的第一個錯誤的版本。 你可
LeetCode刷題之387Python字串中的第一個唯一字元
題目: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 我的解答: 先計數,
LeetCode刷題記錄——第387題(字串中的第一個唯一字元)
題目描述 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返回 2. 思路分析 關鍵問題在於,如何找到第一個不重複字元
每日一題--LeetCode 387 (字串中的第一個唯一字元)java
題目描述: 程式碼如下: class Solution { public int firstUniqChar(String s) { String tmp=s; char []data=tmp.toCharArray(); if(
刷爆LeetCode之 字串中的第一個唯一字元
字串中的第一個唯一字元 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。
Leetcode演算法題(C語言)15--字串中的第一個唯一字元
題目:字串中的第一個唯一字元 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetco
swift 字串中的第一個唯一字元 - LeetCode
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 class Solut
LeetCode題目--字串中的第一個唯一字元(python實現)
題目 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 p
【LeetCode】387. 字串中的第一個唯一字元
題目連結:https://leetcode-cn.com/problems/first-unique-character-in-a-string/description/ 題目描述 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 示例
C++ Leetcode初級演算法之字串中的第一個唯一字元
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = “leetcode” 返回 0. s = “loveleetcode”, 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 class Solution { pub
leetcode-字串中的第一個唯一字元
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 程式碼 /** * @para
Leetcode——字串中的第一個唯一字元——python3
# 字串中的第一個唯一字元 class Solution(object): def first_uniq_char(self, s): # 方法一: # a = list(s) # b = [] #
【leetcode】字串中的第一個唯一字元(C、Python解答)
題目: 字串中的第一個唯一字元 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "lovelee
LeetCode解題 387. 字串中的第一個唯一字元
文章已同步更新到本人個人部落格跳轉連結 題目描述: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含
[Leetcode] 387. 字串中的第一個唯一字元 java hashmap與ASCII碼
給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 第一種方法(hashmap略慢)
Leetcode題解之字串(3)字串中的第一個唯一字元
題目描述: 給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。 案例: s = "leetcode" 返回 0. s = "loveleetcode", 返回 2. 注意事項:您可以假定該字串只包含小寫字母。 思路:第一種
leetcode-387. 字串中的第一個唯一字元
一、問題描述給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。案例:s = "leetcode" 返回 0. s = "loveleetcode", 返回 2.方法一:1.程式碼和思路因為字串是不可變的,這裡我們只能建立一個list來記錄列