关闭

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

标签: 找出字符串的第一个只出现一次的字符
168人阅读 评论(0) 收藏 举报
分类:
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);
    }
}

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6990次
    • 积分:467
    • 等级:
    • 排名:千里之外
    • 原创:40篇
    • 转载:7篇
    • 译文:0篇
    • 评论:0条
    文章存档