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