您的位置:首页 > 其它

在一个字符串中找到第一个只出现一次的字符

2014-08-06 15:40 267 查看
package com.String;

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 = "abacbcdeff";
int index = find(str);
if (index != -1) {
char firstShowOnlyOnceElement = str.charAt(index);
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;
}
}
转http://bylijinnan.iteye.com/blog/1402742
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: