您的位置:首页 > Web前端

【剑指offer-Java版】35第一个只出现一次的字符

2016-04-26 16:38 513 查看
第一个只出现一次的字符:

对于给定的字符,遍历一遍,然后将其映射到一个hash表中,遍历完成之后,遍历哈希表,

遇到的第一个哈希值为1所对应的字符就是第一个只出现了一次的字符

public class _Q35<T> {

public char FirstNotRepeatingChar(char chars[]){
if(chars == null) return '\0'; // 不知java中返回个什么好

int hash[] = new int[256];
for(int i=0; i<chars.length; i++){
hash[chars[i]]++;
}

int resultIndex = 0;
for(int i=0; i<chars.length; i++){
if(hash[chars[i]] == 1){
resultIndex = i;
break;
}
}

if (resultIndex != 0) {
return chars[resultIndex];
} else {
return '\0';
}
}

}


测试代码:

public class _Q35Test extends TestCase {

_Q35 firstNoRepeat = new _Q35();

public void test(){

String str1 = "abaccdeff";
String str2 = "aaaacba";
String str3 = "";
String str4 = "abcabc";

System.out.println(firstNoRepeat.FirstNotRepeatingChar(str1.toCharArray()));
System.out.println(firstNoRepeat.FirstNotRepeatingChar(str2.toCharArray()));
System.out.println(firstNoRepeat.FirstNotRepeatingChar(str3.toCharArray()));
System.out.println(firstNoRepeat.FirstNotRepeatingChar(str4.toCharArray()));

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: