面试题35:第一个只出现一次的字符
2014-09-05 10:05
369 查看
package com.abuge; /** * 面试题35:第一个只出现一次的字符 * 题目:在字符串中找出第一个只出现一次的字符,如输入"abaccdeff",则输出'b' */ import java.util.HashMap; public class GetFirstOnceChar { public static char getFirstOnce(String str) { if(str == null) return '0'; HashMap<String, Integer> hashMap = new HashMap<String, Integer>(); int len = str.length(); //遍历字符串,统计字符串中各个字符出现的次数 for(int i = 0; i < len; i++) { String tmpStr = "" + str.charAt(i); if(hashMap.containsKey(tmpStr)) { int value = hashMap.get(tmpStr); value++; hashMap.remove(tmpStr); hashMap.put(tmpStr, value); }else { hashMap.put(tmpStr, 1); } } //再次遍历字符串,查找出现次数等于1的字符 for(int i = 0; i < len; i++) { String tmpStr = "" + str.charAt(i); int value = hashMap.get(tmpStr); if(value == 1) { System.out.println(str.charAt(i)); return str.charAt(i); } } return '0'; } //自定义哈希表 public static char getFirstOnce_2(String str) { if(str == null) { return '0'; } //只考虑ASCII码,故有256个字符 int[] hashTable = new int[256]; int len = str.length(); //遍历字符串 for(int i = 0; i < len; i++) { char c = str.charAt(i); hashTable[c]++; } //遍历字符串查找第一个出现一次的字符 for(int i = 0; i < len; i++) { char c = str.charAt(i); if(hashTable[c] == 1) { System.out.println(c); return c; } } return '0'; } public static void main(String[] args) { System.out.println("单个字符:"); getFirstOnce("a"); getFirstOnce_2("a"); System.out.println("不存在单个字符:"); getFirstOnce_2("bbccddee"); System.out.println("均是单个字符串:"); getFirstOnce("bacde"); getFirstOnce_2("bacde"); System.out.println("存在出现一次的字符正常字符串:"); getFirstOnce("abaccdeff"); getFirstOnce_2("abaccdeff"); System.out.println("null:"); getFirstOnce(null); getFirstOnce_2(null); } }
相关文章推荐
- 剑指Offer面试题35(java版):第一个只出现一次的字符
- 面试题35:第一个只出现一次的字符
- 剑指Offer----面试题35:第一个只出现一次的字符
- 剑指offer 面试题35—第一个只出现一次的字符
- 面试题35:第一个只出现一次的字符
- (剑指Offer)面试题35:第一个只出现一次的字符
- 第一个值出现一次的字符(面试题 35)
- 时间效率与空间效率的平衡-面试题35-第一个只出现一次的字符
- 面试题35:第一个只出现一次的字符
- 面试题35 第一个只出现一次的字符位置
- 面试题35:第一个只出现一次的字符
- 剑指offer——面试题35:第一个只出现一次的字符(哈希)
- 剑指Offer面试题35(java版):第一个只出现一次的字符
- 面试题35_第一个只出现一次的字符
- 【剑指offer】5.3时间效率与空间效率的平衡——面试题35:第一个只出现一次的字符
- 面试题35:第一个只出现一次的字符
- 【剑指Offer学习】【面试题35:第一个只出现一次的字符】
- 面试题35:第一个只出现一次的字符
- 剑指offer 面试题35 字符串中第一个出现一次的字符
- 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)