【Java编程题】第一次只出现一次的字符

题目:找出字符串中第一个只出现一次的字符

题目链接:https://www.nowcoder.com/questionTerminal/e896d0f82f1246a3aa7b232ce38029d4

输入描述:输入几个非空字符串

输出描述:输出第一个只出现一次的字符,如果不存在输出-1

示例1:

输入

asdfasdfo

aabb

输出
o

-1

题目思路:

法1:利用LinkedHashMap把每一个字符和它相对应的次数进行存储,最后再进行遍历,找到第一个出现次数为1的话,就打印这个字符;

说明:

使用LinkedHashMap而不使用hashMap的原因:LinkedHashMap是比HashMap多了一个链表的结构。LinkedHashMap输出时其元素是有顺序的,而HashMap输出时是随机的。

法2:将字符串转换为数组,然后遍历数组的字符,再利用一个方法统计这个字符在数组中的出现次数,如果出现次数为1的直接打印出这个字符;

import java.util.*;

public class Main{

    //找出字符串中第一次只出现一次的字符

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        while(sc.hasNext()){
            String str = sc.nextLine();
            //result1(str);
            result2(str);
        }

    }

    //方法1:利用 LinkedHashMap
    private static void result1(String str) {
        LinkedHashMap map  = new LinkedHashMap<>();
        for(int i = 0; i < str.length(); i++){
            int index = map.getOrDefault(str.charAt(i), 0);
            map.put(str.charAt(i), index + 1);
        }
        boolean judge = true;
        for(Map.Entry e : map.entrySet()){
            if(e.getValue() == 1){
                System.out.println(e.getKey());
                judge = false;
                break;
            }
        }
        if(judge){
            System.out.println(-1);
        }
    }


    //方法2
    private static void result2(String str){
        char [] chars = str.toCharArray();
        boolean judge = true;
        for(int i = 0; i < chars.length; i++){
            int charCount = getCharCount(chars, chars[i]);
            if(charCount == 1){
                judge = false;
                System.out.println(chars[i]);
                break;
            }
        }
        if(judge){
            System.out.println(-1);
        }
    }
    //统计字符在该数组中出现的次数
    private static int getCharCount(char [] chars, int ch){
        int charCount = 0;
        for(int i = 0; i < chars.length; i++){
            if(ch == chars[i]){
                charCount++;
            }
        }
        return charCount;
    }
    
}

 

你可能感兴趣的:(Java编程题)