【google 2006年笔试题】 在一个字符串中找到第一个只出现一次的字符(包括普通汉字)
2014-08-24 21:52
555 查看
参考:http://blog.csdn.net/xiaozhuyao123/article/details/7425044
开一个char范围的大小的hashTable,注意java中char占2个字节,大小为0xffff。在hashTable中统计每个字符的次数即可。
开一个char范围的大小的hashTable,注意java中char占2个字节,大小为0xffff。在hashTable中统计每个字符的次数即可。
package cn.geosis.datastructure; public class HashTableTest { /** * @param args */ public static void main(String[] args) { // TODO 自动生成的方法存根 String testString="ccaaddddb北京bb11大学??//"; getFirstMaxOccurrenceChar(testString); } /*查找第一次出现单独字符的主函数*/ private static void getFirstMaxOccurrenceChar(String temString) { char[] temp=temString.toCharArray(); MyHashTable myHashTable=new MyHashTable(); for (char c : temp) { MyData myData=new MyData(); myData.setCharData(c); myHashTable.insert(myData); } MyData[] result=MyHashTable.getHashMap(); boolean flag=false; for (int i = 0; i < result.length; i++) { MyData myData = result[i]; /*只要hash表中该数据不为null且计数为1则输出并跳出循环*/ if (myData!=null&&myData.getCount()==1) { System.out.println("第一次出现单字符为:"+myData.getCharData()); flag=true; break; } } if (flag==false) { System.out.println("不存在单字符!"); } } } /*设计hash表,包含一个长度为Oxffff的数组和insert函数*/ class MyHashTable{ private static MyData[] hashMap=new MyData[0xffff]; /*如果第一次插入,则将计数设置为1,否则计数+1*/ public void insert(MyData myData){ if (hashMap[myData.getCharData()]==null) { myData.setCount(1); }else { myData.setCount(hashMap[myData.getCharData()].getCount()+1); } hashMap[myData.getCharData()]=myData; } public static MyData[] getHashMap() { return hashMap; } } /*设计hash表中的类型,即一个字符和它的计数*/ class MyData{ private char charData; private int count; public char getCharData() { return charData; } public void setCharData(char charData) { this.charData = charData; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } }
相关文章推荐
- Google笔试题:哈希表的一个意想不到的应用--在字符串中查找第一个只出现一次的字符
- 每天学习一算法系列(17)(在一个字符串中找到第一个只出现一次的字符)
- 在一个字符串中找到第一个只出现一次的字符
- 【练习】在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 第17 题:题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符(java实现)
- 17.在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符
- 利用hashtable思想,保存在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b;
- 在一个字符串中找到第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。
- 第十七题:在一个字符串中找到第一个只出现一次的字符。
- 在一个字符串中找到第一个只出现一次的字符
- 微软面试100题目之17 :在一个字符串中找到第一个只出现一次的字符。