Java找出字符串中第一個不重複的字符

indexOf() 方法有以下四種形式:

public int indexOf(int ch): 返回指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。

public int indexOf(int ch, int fromIndex): 返回從 fromIndex 位置開始查找指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。

int indexOf(String str): 返回指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。

int indexOf(String str, int fromIndex): 返回從 fromIndex 位置開始查找指定字符在字符串中第一次出現處的索引,如果此字符串中沒有這樣的字符,則返回 -1。

題目:給你一個字符串,找出第一個不重複的字符,如“abbbabcd”,則第一個不重複就是c。

 public int firstUniqChar(String s) {
        int start;
        int end;
        int result = s.length();
        for(char ch='a';ch<='z';ch++) {
            start = s.indexOf(ch);
            end = s.lastIndexOf(ch);
            if(start == end && start != -1) {
                result = Math.min(result,start);
            }
        }
        if(result == s.length()) {
            return -1;
        }
        return result;
    }

這個索引數字挺費解,對比一下,加深記憶

public class Main {
    public static void main(String args[]) {
        String string = "aaa456ac";  
        //查找指定字符是在字符串中的下標。在則返回所在字符串下標;不在則返回-1.  
        System.out.println(string.indexOf("b")); // indexOf(String str); 返回結果:-1,"b"不存在  
 
        // 從第四個字符位置開始往後繼續查找,包含當前位置  
        System.out.println(string.indexOf("a",3));//indexOf(String str, int fromIndex); 返回結果:6  
 
        //(與之前的差別:上面的參數是 String 類型,下面的參數是 int 類型)參考數據:a-97,b-98,c-99  
 
        // 從頭開始查找是否存在指定的字符  
        System.out.println(string.indexOf(99));//indexOf(int ch);返回結果:7  
        System.out.println(string.indexOf('c'));//indexOf(int ch);返回結果:7  
 
        //從fromIndex查找ch,這個是字符型變量,不是字符串。字符a對應的數字就是97。  
        System.out.println(string.indexOf(97,3));//indexOf(int ch, int fromIndex); 返回結果:6  
        System.out.println(string.indexOf('a',3));//indexOf(int ch, int fromIndex); 返回結果:6  
    }
}

輸出結果爲:

-1
6
7
7
6
6

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章