java实现--字符串中第一个单独出现的字符
来源:互联网 发布:淘宝修改默认付款方式 编辑:程序博客网 时间:2024/05/20 03:05
需求:
给定一个由大写字母组成的字符串,返回第一个单独出现的字母
分析:
1、思路一
创建HashMap集合,遍历字符串,将各个字母及对应的角标存到集合中,再次遍历字符串,看当前字符对应的角标和HashMap集合中的角标是否相同,如果相同就直接返回,如果不同,将HashMap集合中的角标改成该字母在字符串中的当前角标,继续遍历,如果没有单独出行的字母,就返回特殊标记代表没有该字母,比如返回'#'。
2、思路二
创建HashMap集合,遍历字符串,将各个字母出现的次数记录下来,再次遍历字符串,看map集合中该字母的个数是否是1,如果是就返回该字母,否则继续遍历。
3、思路三
创建int[]数组,记录各个字母的出现个数,大写字母共26,所以数组大小是26,假设A对应角标0,那么Z对应角标25。遍历字符串,更新int[]数组中该字符的个数,再次遍历字符串,看字符对应的个数是否是1,如果是就直接返回,否则继续遍历。
代码:
import java.util.*;class UniqueChar{//思路一public static char getFirstUnique1(String str){//创建HashMap集合,将字符串中各个字母和角标存到集合中HashMap<Character, Integer> hm = new HashMap<Character, Integer>();for(int i = 0; i < str.length(); i++){hm.put(str.charAt(i), i);}//再次遍历字符串,看map集合中的角标和当前字符在字符串中的角标是否相同,如果相同直接返回,否则修改map集合中的值,继续遍历for(int i = 0; i < str.length(); i++){if(i == hm.get(str.charAt(i))){return str.charAt(i);}else{hm.put(str.charAt(i), i);}}return '#';}//思路二public static char getFirstUnique2(String str){//创建HashMap集合,存储各个字母及出现的次数HashMap<Character, Integer> hm = new HashMap<Character, Integer>();//遍历字符串,将字母和出现的个数存到map集合中for(int i = 0; i < str.length(); i++){int count = 0;if(hm.containsKey(str.charAt(i))){count = hm.get(str.charAt(i));}hm.put(str.charAt(i), count+1);}//遍历字符串,返回出现个数是1的字母for(int i = 0; i < str.length(); i++){if(hm.get(str.charAt(i)) == 1){return str.charAt(i);}}return '#';}//思路三public static char getFirstUnique3(String str){//创建int[]数组,存储各个字母的个数int[] result = new int[26];//遍历字符串,更新int[]数组中的个数for(int i = 0; i < str.length(); i++){result[str.charAt(i)-'A'] += 1;}//遍历字符串,返回个数是1的字母for(int i = 0; i < str.length(); i++){if(result[str.charAt(i)-'A'] == 1){return str.charAt(i);}}return '#';}public static void main(String[] args){Scanner scan = new Scanner(System.in);String str;while(scan.hasNext()){str = scan.nextLine();System.out.println(str+"字符串中第一个单独出现的字母是"+getFirstUnique1(str));System.out.println(str+"字符串中第一个单独出现的字母是"+getFirstUnique2(str));System.out.println(str+"字符串中第一个单独出现的字母是"+getFirstUnique3(str));}}}
阅读全文
0 0
- java实现--字符串中第一个单独出现的字符
- 字符串中第一个单独出现的字符
- 用java实现,查找字符串中第一个没有重复出现的字符
- 在一个字符串中找到第一个只出现一次的字符(java实现)
- 在一个字符串中找到第一个只出现一次的字符(java实现)
- 在一个字符串中找到第一个只出现一次的字符(JAVA实现)
- 华为OJ ---找出字符串中第一个只出现一次的字符(java实现)
- 用java实现输出字符串中第一个出现不重复的字符
- JAVA实现 剑指offer—求字符串中第一个只出现一次的字符
- 算法--06谷歌面试:字符串中第一个只出现一次的字符(Java实现)
- 找出字符串中只出现一次的第一个字符
- 查找字符串中第一个出现一次的字符
- 求一个字符串中第一个出现一次的字符
- 查找字符串中第一个只出现一次的字符
- 找出字符串中第一个只出现一次的字符
- 查找字符串中第一个只出现一次的字符
- 字符串中第一个只出现一次的字符
- 字符串中第一个只出现一次的字符
- bootstrap table 导出excel
- 用C#创建SHELL扩展
- 分布式缓存Redis之二进制安全
- 【J2EE基础】1.基础知识点
- OpenGL 入门教程(四)
- java实现--字符串中第一个单独出现的字符
- localStorage使用
- PHP常用(正则)表单验证类
- 【蓝桥杯】【搭积木】
- nox模拟器(安卓5.1)adb连接
- 最新的编程语言排行版出炉看看你学的语言能排第几
- 导出excel 格式自己随意调整
- 移动端兼容性问题解决方案
- Lintcode173 Insertion Sort List solution 题解