《剑指offer》编程题java实现(八):第一个只出现一次的字符
2018-03-07 11:05
387 查看
问题描述:
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
感觉这道题没有说清楚,所谓的第一个出现的字符,指的是按照ASCII码的顺序,还是该字符串出现的顺序,本题的思路是基于字符串的顺序。
当然,重要的是思路,问题是什么并不重要!
思路描述
思路一:使用两个for循环,两层循环,时间复杂度为O(N^2)
思路二:借助hashmap,第一次遍历存储进入map中,key为字符,value为出现的次数,总体复杂度为O(N)
代码实现
在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置
感觉这道题没有说清楚,所谓的第一个出现的字符,指的是按照ASCII码的顺序,还是该字符串出现的顺序,本题的思路是基于字符串的顺序。
当然,重要的是思路,问题是什么并不重要!
思路描述
思路一:使用两个for循环,两层循环,时间复杂度为O(N^2)
思路二:借助hashmap,第一次遍历存储进入map中,key为字符,value为出现的次数,总体复杂度为O(N)
代码实现
//使用LinkedHashMap,保证存取顺序一致,可以得到第一个出现一次的字符 //根据牛客的测试判断,字符串第一个位置为0 public static int FirstNotRepeatingChar_solution(String str) { //非空校验 if (str.length()==0) { return -1; } char [] arr=str.toCharArray(); LinkedHashMap<Character, Integer> map=new LinkedHashMap<>(); for(char c: arr) { if (map.containsKey(c)) { int time=map.get(c); map.put(c,++time ); }else { map.put(c, 1); } } //遍历map int pos=-1; for(char c:arr ) { pos++; if (map.get(c)==1) { break; } } return pos; }
相关文章推荐
- JAVA实现 剑指offer—求字符串中第一个只出现一次的字符
- 《剑指offer》编程题java实现(二十三):数组中唯一只出现一次的数字
- 华为OJ ---找出字符串中第一个只出现一次的字符(java实现)
- java实现——035第一个只出现一次的字符
- 剑指offer----第一个只出现一次的字符位置----java实现
- 剑指Offer(java版):第一个只出现一次的字符
- 在一个字符串中找到第一个只出现一次的字符(java实现)
- 第一个只出现一次的字符 java实现
- 第一个只出现一次的字符(Java实现)
- 《剑指offer》编程题java实现(十一):数组中只出现一次的两个数字
- 在一个字符串中找到第一个只出现一次的字符(java实现)
- 在一个字符串中找到第一个只出现一次的字符(java实现)
- 在一个字符串中找到第一个只出现一次的字符(JAVA实现)
- 算法--06谷歌面试:字符串中第一个只出现一次的字符(Java实现)
- 第一个只出现一次的字符java实现
- [剑指Offer]第一个只出现一次的字符
- 《剑指offer》——第一个只出现一次的字符
- 《剑指offer》——第一个只出现一次的字符位置
- 剑指offer系列之三十三:第一个只出现一次的字符
- 《剑指Offer》面试题:找到第一个只出现一次的字符