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
原创粉丝点击