1. 題目鏈接:387. 字符串中的第一個唯一字符
2. 題目描述:
給定一個字符串
s
,找到 它的第一個不重復的字符,并返回它的索引 。如果不存在,則返回-1
。示例 1:
輸入: s = "leetcode" 輸出: 0
示例 2:
輸入: s = "loveleetcode" 輸出: 2
示例 3:
輸入: s = "aabb" 輸出: -1
提示:
1 <= s.length <= 105
s
只包含小寫字母
3. 解法:
3.1 算法思路:
- 首先,獲取輸入字符串的長度,存儲在變量
size
中。 - 創建一個長度為256的整數數組
count
,用于存儲每個字符出現的次數。這里假設輸入字符串只包含ASCII字符,因此數組大小為256。 - 使用一個循環遍歷輸入字符串中的每個字符,統計每個字符出現的次數。將字符對應的ASCII碼作為數組下標,將對應位置的值加1。
- 再次使用一個循環遍歷輸入字符串中的每個字符,檢查其出現次數是否為1。如果某個字符出現次數為1,則返回該字符在字符串中的索引。
- 如果循環結束后仍未找到只出現一次的字符,則返回-1,表示沒有符合條件的字符。
3.2 C++算法代碼:
class Solution {
public:int firstUniqChar(string s) {int size = s.size(); // 獲取字符串長度int count[256] = {0}; // 初始化一個長度為256的數組,用于存儲每個字符出現的次數for (int i = 0; i < size; i++) {count[s[i]] += 1; // 統計每個字符出現的次數}for (int i = 0; i < size; i++) {if (1 == count[s[i]]) { // 如果某個字符出現次數為1,返回其索引return i;}}return -1; // 如果沒有找到只出現一次的字符,返回-1}
};