方法一(不要求時間複雜度,只要求做出來)
兩次迴圈巢狀,遍歷字串。
int
find_one
(char str,
int len)
if(count ==2)
}if((count ==1)
&&(j==len))}
return-1
;}intmain()
輸出結果:
方法二(要求時間複雜度為o(n) )
根據字元ascii 字元特性,先統計每個字元出現的次數,放入乙個輔助陣列中,最後返回第乙個只出現一次的字元,遍歷一遍字串即可。
int
find_one
(char
*str)
;char
*p = str;
int i =0;
while
(*p !=
'\0'
) p = str;
while
(*p !=
'\0'
) p++;}
return
'\0';}
intmain()
輸出結果:b
補充:變種題目,找出第一次重複出現的字元。(方法相同) 查詢字串中第乙個只出現一次的字元
考研的時候學習過雜湊函式,但這只是書本上的知識,簡單的理解,從來沒用過,也不知道怎麼用,直到學了第一堂演算法課,原來hash表可以用陣列模擬,統計數字或字元出現的次數。如下 int chash getstunum int data,int len,int score if data null len...
查詢字串中第乙個只出現一次的字元
題目 在乙個字串中找到第乙個只出現一次的字元。如輸入abaccdeff,則輸出b。分析 如果字元都是8位,可以用256b的空間表示每個字元的出現次數,遍歷字串一遍完成計數,第二次遍歷該字串,找出第乙個出現次數僅為1的字元並輸出。include include include include void...
字串中第乙個只出現一次的字元
在字串中找出第乙個只出現一次的字元。如輸入 abaccdeff 則輸出b。如果字串中不存在只出現一次的字元,返回 字元。樣例 輸入 abaccdeff 輸出 b 思路 用乙個hashmap key是每個字母 value是出現的次數,第一次用for迴圈將字串每個字元錄到雜湊map裡,如果有重複的就把v...