面試100題 17 查詢第乙個只出現一次的字元

2021-06-21 15:40:37 字數 1168 閱讀 1212

題目:

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

解一:利用棧儲存外迴圈出現的字元,然後進行內迴圈遍歷。如果發現有重複的字元,則出棧,同時推出內迴圈。再取外迴圈下乙個字元壓棧,再進行內迴圈遍歷。如果內迴圈到結尾,棧中仍不為空,則此時棧中值即為所求。

/*title: 17.查詢第乙個只出現一次的字元

author:  gocode

date:    2012-10-17*/

#include 

#include 

using

namespace

std;  

char

findfirstchar(

char

a)  

}  if(j == length && !stack.empty()) 

// 內迴圈遍歷到尾部,此時沒有出棧,則棧中值為第一次出現的字元

break

;  }  

return

stack.empty()? 

'n': stack.back();  

}  void

main()  

;  <

system("pause"

);  

}  

解二:統計每個字元出現的次數,儲存至另乙個陣列。然後遍歷該陣列,查詢第乙個值為

1的,則此值即為所求。

/*title: 17.查詢第乙個只出現一次的字元:解二

author:  gocode

date:    2012-10-17*/

#include 

#include 

using

namespace

std;  

char

solve(

const

string& s)  

;  memset(times, 0, sizeof

(times));  

for(

size_t

i = 0; i < s.size(); ++i)  

for(size_t

i = 0; i < s.size(); ++i)  

}  return

0;  

}  int

main()  

關於Regex Replace只替換第乙個的問題

都知道正規表示式吧,老牛x老牛x的東西了,就是如果你長時間不用,可能很難入門,我也是,當時看的時候都明白了,用的時候也只是那麼一兩回,幾天不用,全忘光了,今天又遇到乙個這樣的問題,乙個關於regex.replace只替換第乙個的問題,記得在js裡用replace的時候就是只替換第乙個匹配的,沒辦法只...

查詢第乙個只出現一次的字元

這類題目用到的思想就是就用雜湊表,這樣把字串對應到乙個陣列,hashtable中。因為全部的字元總共有256個,因此建立乙個hashtable 256 演算法的過程是這樣的,首先遍歷一遍字串,根據字元的值來使得hashtable 字元 做統計,此字元出現一次,那麼對應的陣列元素加一。此時時間複雜度o...

演算法題 第乙個只出現一次的字元

在乙個字串 1 字串長度 10000,全部由字母組成 中找到第乙個只出現一次的字元,並返回它 思路 用set統計不同字元,並計算不同字元出現的次數,如果某個字元出現次數是1,就返回。class solution deffirstnotrepeatingchar self,s if len s 0 r...