【剑指offer-Java版】35第一个只出现一次的字符
2016-04-26 16:38
513 查看
第一个只出现一次的字符:
对于给定的字符,遍历一遍,然后将其映射到一个hash表中,遍历完成之后,遍历哈希表,
遇到的第一个哈希值为1所对应的字符就是第一个只出现了一次的字符
测试代码:
对于给定的字符,遍历一遍,然后将其映射到一个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())); } }
相关文章推荐
- html5笔记
- 使用jQuery让事件动起来
- 【剑指offer-Java版】34丑数
- 【剑指offer-Java版】33把数组排成最小的数
- 【剑指offer-Java版】32从1到n的整数中1出现的次数
- 【剑指offer-Java版】31连续子数组的最大和
- 【剑指offer-Java版】30最小的K个数
- Javascript模块化编程
- 【剑指offer-Java版】29数组中出现次数超过一半的数字
- jsp页面之间用?传值
- html中input元素的input事件对iphone原生中文输入法下的兼容问题
- node.js---sails项目开发(3)
- javascript知识点记录(2)
- angularJS 事件广播与接收[转]
- caffe学习笔记3.3--Loss
- 关于Bootstrap日期控件datetimepicker被模态框等遮罩在底部的问题及解决办法。
- HTML5——购物车
- 剑指offer(22):包含min函数的栈
- [javascript] 看知乎学习js闭包
- CSS3径向渐变之大鱼吃小鱼之孤单的大鱼