最開始有兩個思路:
1.類似之前做過的統計字串**現超過一半的數字,從同乙個字元開始,利用雙迴圈,每次從頭到尾比對,一旦發現超過兩次,立馬跳出內迴圈,並更改參照字元。直到內迴圈結束,找出只出現一次的位置。思路簡單,但**過於繁瑣。
3.用乙個字典統計每個字元出現的次數(將字元的位置作為索引),遍歷字典,找出出現一次的字元位置。
**:
def firstnotrepeatingchar(self, s):
# write code here
if s=='': #排除字串為空的情況
return -1
dict_str={}#建立字典
size=len(s)
for i in range(size):
if s[i] in dict_str:#字元重複,字典中該字元次數加1
dict_str[s[i]]+=1
else:
dict_str[s[i]]=1
for i in range(size):#找出只有一次的字元
if dict_str[s[i]]==1:
return i
return -1#全部重複就返回-1
另附上常見處理字串的一些方法: 求字串中字元只出現一次的的第乙個字元
求字串中字元只出現一次的的第乙個字元,需要借助hashtable的int陣列,存放字元出現的個數,然後遍歷只出現一次的第乙個字元。hashtable長度是256,因為字元是乙個位元組,即256的長度。實現過程如下所示 package structs.string author jcm 時間 2016...
尋找字串中只出現一次的第乙個字元
描述 找出字串中第乙個只出現一次的字元 詳細描述 介面說明 原型 bool findchar char pinputstring,char pchar 輸入引數 char pinputstring 字串 輸出引數 指標指向的記憶體區域保證有效 char pchar 第乙個只出現一次的字元 如果無此字...
在乙個字串中找到第乙個只出現一次的字元
在乙個字串中找到第乙個只出現一次的字元 題目 在乙個字串中找到第乙個只出現一次的字元。如輸入abaccdeff,則輸出b。我的思路是 如果要知道乙個字元是否只出現過一次,必須遍歷一次字串 知道所有字元出現過的情況,從前從後都可以。但在遍歷中要用陣列統計每個字元的出現次數,到最後將,再遍歷一遍陣列,得...