劍指Offer第35題(第乙個只出現過一次的字元)

2021-10-02 05:55:09 字數 775 閱讀 7373

(本部落格旨在個人總結回顧)

題目描述:

在字串中找到第乙個只出現一次的字元。如輸入"abaccdeff",這輸出『b』。

解題思路:

1、直接遍歷字串,訪問到乙個字元時,再遍歷後邊的字元,看看是否重複。若重複訪問下乙個字元。時間複雜度為o(n^2).

2、使用雜湊表儲存資訊,遍歷一遍字串時儲存字元(key)及其出現的次數(value),再遍歷一遍字串,查雜湊表value為1,則該字元為目標字元。

時間複雜度為:兩次遍歷字串 o(2n) = o(n),雜湊表增刪改查時間複雜度為o(1),則時間複雜度為:o(n)*o(1) = o(n).

3、同樣的道理使用紅黑樹儲存資訊,時間複雜度為 o(nlogn)  (stl的map使用為紅黑樹實現的, has_map則為雜湊表實現的)

解法二:

字元是乙個長度為8的資料型別,因此總共有256種可能。因此我們可以建立乙個長度為256的陣列,以字元ascii為下標的陣列元素儲存該字元對應出現的次數,得到字元ascii碼為鍵值的雜湊表。

#include "stdafx.h"

#includeusing namespace std;

/* * @name firstuniquechar

* @brief 獲取字串第乙個出現一次的字元

* @param [in] char * str

* @return ch

Python劍指offer 第乙個只出現一次的字元

在乙個字串 0 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它的位置,如果沒有則返回 1 需要區分大小寫 從0開始計數 時間限制 c c 1秒,其他語言2秒 空間限制 c c 32m,其他語言64m coding utf 8 class solution def fir...

劍指offer第50題 第乙個只出現一次的字元

在字串 s 中找出第乙個只出現一次的字元。如果沒有,返回乙個單空格。s 只包含小寫字母。示例 s abaccdeff 返回 b s 返回 解法一 雙層遍歷,set記錄使用遍歷字串的方式進行解題,不過再遍歷的過程中可以用set作記錄提高效率。每當遍歷到乙個新的字元時,就將其儲存到set中 如果set中...

劍指Offer之面試題35 第乙個只出現一次的字元

所有 均通過g 編譯器 測試,僅為練手紀錄。面試題35 第乙個只出現一次的字元。題目 在字串中找出第乙個只出現一次的字元。如輸入 abaccdeff 則輸出 b 面試題35 第乙個只出現一次的字元。題目 在字串中找出第乙個只出現一次的字元。如輸入 abaccdeff 則輸出 b char findf...