java-17-在一个字符串中找到第一个只出现一次的字符
程序员文章站
2024-03-16 12:42:10
...
public class FirstShowOnlyOnceElement {
/**Q17.在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
* 1.int[] count:count[i]表示i对应字符出现的次数
* 2.将26个英文字母映射:a-z <--> 0-25
* 3.假设全部字母都是小写
*/
public static void main(String[] args) {
String str="abaccdeff";
int index=find(str);
if(index!=-1){
char firstShowOnlyOnceElement=str.charAt(index);//charAt() source code:return value[index + offset];
System.out.println(firstShowOnlyOnceElement);
}
}
//return the index of firstShowOnlyOnceElement
public static int find(String str){
if(str==null||str.length()==0){
return -1;
}
int len=str.length();
char[] letters=str.toCharArray();
//In java,'char' is 16 bits,so there are 2^16 characters.
//But we deal with only the 26 English letters in this case.
int[] count=new int[26];//the 'HashTable'
for(int i=0;i<len;i++){
char curChar=letters[i];
count[curChar-'a']++;
}
for(int i=0;i<len;i++){
char curChar=letters[i];//iterate the string,not the HashTable
if(count[curChar-'a']==1){
return i;
}
}
return -1;
}
}
上一篇: 两个排序数组的中位数
下一篇: 百钱百鸡案例