演算法1 找出第乙個非重複字元在字串中的位置

2021-10-04 14:48:10 字數 694 閱讀 7364

詳細描述

對於乙個字串,為了簡便起見,假設字串的所有字元都是英文的。這個字串的長度不定,可長可短,內容也不確定,可能有大寫,可能也有小寫,有重複的,比如這樣乙個字串 」this is a test book」,這個字串裡面有很多字元是重複的,比如t,i,o等,也有沒有重複的字元,比如h,因此這個演算法的目標就是找到h,然後返回1(位置從0開始)。再比如這個字串 」they are working」,那麼第乙個不重複的字串是t,所以返回0。

分析1對於這個問題,很自然的會想到,要去遍歷整個字串,然後對每個字元進行標記,判斷這個字串中是不是有重複的字元或者是不是有的字元沒有重複,重要的是要找到沒有重複的字元而且是第乙個沒有重複的字元。

關鍵的問題就是怎麼對遍歷的字元進行標記,在不考慮效率的情況下,當然會有很多方法可以做到,我們先設計一種多次遍歷的方式來達到這個目的。

我們以 「this is a test string」 作為例子,理論上講,我們只要兩層迴圈就可以找到第乙個不重複的字元,外層迴圈從第乙個字元t開始遍歷,內層迴圈從該字元的後乙個字元h開始遍歷,如果後續的字元中有與該字元相同的字元,則內層結束迴圈,表示有重複字元,如果記憶體迴圈一直到字串末尾了還沒有相同字元,則表示我們找到了第乙個不重複的字串,則外層迴圈結束。

外層迴圈從t開始,記憶體迴圈從h開始,很顯然t和h不同,所以記憶體迴圈繼續往前,依次是i,s,空格,i,s,空格a空格,好,內層迴圈的下乙個字元是t&#

第乙個非重複出現的字元

給乙個字串,從中找出第乙個只出現一次的字元。輸入字串 abcsgagc 輸出字元 b 使用等長度的陣列w作為輸入字串a的衛星資料,其中存放對應字元是否重複出現的標誌。初始化為0,當對應字元重複出現時將對應位賦值為1。函式mm char a,int m,int length,int w 判斷第m位字元...

寫乙個函式,找出給定字串中第乙個重複的字元

ex abcda return a bcbdaa return b abc return nonedef search first repetition str1 if set str1 len str1 利用set去重的功能,通過len 函式,判斷字串中是否含有重複元素 return none 如...

找出字串中第乙個不重複的字元

leetcode原題位址 將字串轉換成字元陣列 使用兩層迴圈遍歷,最終根據第二層迴圈退出時的下標值來判斷是否是不重複的字元 我的 public intfirstuniqchar string s if temp i temp j if j length if i length return resu...