package java_study.JianZhiOffer;
import org.junit.Test;
import scala.Char;
import java.util.HashMap;
/**
* Created by ethan on 2015/7/7.
* 剑指offer中No36题
*/
public class No36第一个只出现一次的字符 {
public char findFirstOnceCharacter(String str){
HashMap<Character, Integer> hashMap = new HashMap<Character, Integer>();
for (int i=0; i<str.length(); i++){
char ch = str.charAt(i);
if (hashMap.containsKey(ch)){
hashMap.put(ch, hashMap.get(ch)+1);
}else
hashMap.put(ch, 1);
}
for (int i=0; i<str.length(); i++){
char ch = str.charAt(i);
if (hashMap.get(ch)!=null && hashMap.get(ch)==1)
return ch;
}
return '\0';
}
// hashMap是一个比较复杂的数据结构,可以直接使用比较轻量级的数据结构:数组;
// 字符的统计都都可以考虑使用这种轻量级的数组实现map
public char findFirstOnceCharacter_1(String str){
int[] hashtable = new int[256];
for (int i=0; i<str.length(); i++){
hashtable[str.charAt(i)] += 1;
}
for (int i=0; i<str.length(); i++){
char ch = str.charAt(i);
if (hashtable[ch]==1)
return ch;
}
return '\0';
}
@Test
public void test(){
System.out.println(findFirstOnceCharacter("abaccfdwedass"));
System.out.println(findFirstOnceCharacter_1("abaccfdwedass"));
System.out.println((char)97);
}
}
找出字符串的第一个只出现一次的字符
最新推荐文章于 2021-08-30 18:16:08 发布