落書きノート

ふと自分が気になった事を書いてます

Javaで問題を解く

問題1.2です。なかなか考えました。

世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~

世界で闘うプログラミング力を鍛える本 ~コーディング面接189問とその解法~

import java.util.Scanner;
import java.util.Hashtable;
import java.util.Enumeration;

class q1_2 {
    public static void main(String[] args) {
        Hashtable<String, Integer> numbers =
            new Hashtable<String, Integer>();
        Scanner scan = new Scanner(System.in);
        boolean flag = true;
        String input = scan.nextLine();
        String input2 = scan.nextLine();
        String[] split = input.split("");
        String[] split2 = input2.split("");
        for(String s : split) {
            if(numbers.containsKey(s))
                numbers.put(s, numbers.get(s) + 1);
            else
                numbers.put(s, 1);
        }
        for(int i = 0; i < split2.length; i++) {
            if(numbers.containsKey(split2[i])
               && numbers.get(split2[i]) > 0) {
                numbers.put(split2[i], numbers.get(split2[i]) - 1);
                continue;
            } else {
                flag = false;
                break;
            }
        }
        Enumeration<Integer> e = numbers.elements();
        while(e.hasMoreElements())
            if(e.nextElement() > 0)
                flag = false;
        if(flag)
            System.out.println("この二つの文字列は並び替えになっています。");
        else
            System.out.println("この二つの文字列は並び替えになっていません。");
    }
}