第一個只出現一次的字元位置
在一個字串(0<=字串長度<=10000,全部由字母組成)中找到第一個只出現一次的字元,並返回它的位置, 如果沒有則返回 -1(需要區分大小寫).
public class Solution {
public int FirstNotRepeatingChar(String str) {
int N = str.length(); //求出待查詢字串的長度
char[] c = new char[N]; //建立字元陣列,用於儲存字串轉化來的字元陣列
c = str.toCharArray();
int[] a = new int[60]; //次陣列為用於儲存對應每個字母出現次數的資訊,序號0-25對應表示a-z,序號32-57對應表示A-Z
if( N == 1 ) {
return 1; //如果長度為1,則直接返回1
}
if(N == 0) {
return -1; //長度為0,則返回-1
}
for(int i = 0 ; i < N ; i ++) {
if(a[c[i]-65] == 0 ) { //如果對應字母沒有出現過,則標記為1次
a[c[i]-65] =1;
}
else if(a[c[i]-65] == 1) { //此時該字母是第二次出現,則標記為2次
a[c[i]-65] =2;
}
else if(a[c[i]-65] == 2) { //此時多次出現,跳過尋找下一個待查的字母
continue;
}
}
int t = -1;
for(int i = 0 ; i < N ; i ++) { //再一次迴圈每一個元素
if(a[c[i]-65] == 0 ) { //如果出現0次,跳過
continue;
}
else if(a[c[i]-65] == 1) { //剛好出現1次,把序號傳給t
t = i ;
break;
}
else if(a[c[i]-65] == 2) {
continue;
}
}
return t;
}
}