算法1:找出第一个非重复字符在字符串中的位置
詳細描述
 對于一個字符串,為了簡便起見,假設字符串的所有字符都是英文的。這個字符串的長度不定,可長可短,內容也不確定,可能有大寫,可能也有小寫,有重復的,比如這樣一個字符串 ”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&#
總結
以上是生活随笔為你收集整理的算法1:找出第一个非重复字符在字符串中的位置的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: Android华容道之一步一步实现-8-
- 下一篇: 算法2:判断两个字符串内容是否相同
