來自:劍指offer
分析:通過兩次遍歷字串計算得到,第一次遍歷字串通過乙個陣列確定每個字元出現的次數,第二次遍歷字串確定第乙個只出現一次字元是誰。時間複雜度為o(n)。
[cpp]view plain
copy
print?
#include "stdafx.h"
#include
using
namespace
std;
char
firstnotrepeatingchar(
const
char
* pstring)
if( *pstart !=
'\0'
) return
*pstart;
else
return
'\0'
; }
int_tmain(
intargc, _tchar* ar**)
擴充套件:
1:實現一函式,給定兩個字串str1和str2,將字串str2中在str1出現的字元刪除掉。例如,str1=「we are strudent」,str2=「eas」,最終返回「w r tudnt」。
做法:遍歷str2並將其字元放入雜湊陣列中,再遍歷str1,去掉雜湊陣列中存在的字元即可。與上題思路一致。時間複雜度為o(n+m),n和m分別為str1和str2的長度。空間為o(1)。
2:實現一函式,將字串**現重複字元全部去掉。例如,str=「google」,那麼返回為「gole」。
做法:類似,可用乙個布林陣列去記錄。第一次出現標誌位true,當第二次訪問該字元時,當前標誌位為true時,刪除當前字元。時間複雜度為o(n),n為str的長度。空間為o(1)。
第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元。如輸入 abaccdeff,則輸 出b。分析 這道題是 2006年google的一道筆試題。看到這道題時,最直觀的想法是從頭開始掃瞄這個字串中的每個字元。當訪問 到某字元時拿這個字元和後面的每個字元相比較,如果在後面沒有發現重複的字 符,則該字元就是只出...
第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元,並輸出它在字串中的位置。如輸入 abaccdeff,則輸出 b 1。定義乙個256長度的陣列,乙個用來記錄字元出現的次數。然後在遍歷字元陣列,如果該字元出現了一次,輸出並結束,否則繼續。include using namespace std 在乙個字串中...
第乙個只出現一次的字元
1.問題描述 在字串中找出第乙個只出現一次的字元。例如輸入abaccdeff,則輸出 b。來自 劍指offer 2.分析 我們可以用乙個容器來存放 對應的字元和出現次數 雜湊表 這裡僅僅用陣列來簡單的模擬了一下 第一次掃瞄時將出現的次數存放在表中,第二次掃瞄時掃瞄到次數為1的字元並返回該字元即可。表...