落書きノート

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

Javaで問題を解く 書き換えて工夫その2

これで最後です。次回以降から新しい問題を。問題1.4については大体です。突き詰めて考えると難しいです。

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

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

// 問題1.3

import java.util.Scanner;

class q1_3_another {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        scan.useDelimiter("\\s*,\\s*|\n");
        String input = scan.next();
        int length = Integer.parseInt(scan.next());
        String answer = "";
        for(int i = 0; i < length; i++) {
            char c = input.charAt(i);
            if(c == ' ')
                answer += "%20";
            else
                answer += c;
        }
        System.out.println(answer);
    }
}

// 問題1.4

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

class q1_4_another {
    public static void main(String[] args) {
        Hashtable<Character, Integer> numbers =
            new Hashtable<Character, Integer>();
        Scanner scan = new Scanner(System.in);
        String input = scan.nextLine();
        int length = 0;
        int cnt = 0;
        boolean flag = true;
        for(char c : input.toCharArray())
            if(c == ' ')
                continue;
            else if(numbers.containsKey(c)) {
                numbers.put(c, numbers.get(c) + 1);
                length++;
            }
            else {
                numbers.put(c, 1);
                length++;
            }
        Enumeration<Character> keys = numbers.keys();
        if(length % 2 == 1) {
            while(keys.hasMoreElements()) {
                char c = keys.nextElement();
                if(numbers.get(c) % 2 == 1)
                    cnt++;
                else if(numbers.get(c) % 2 != 0) {
                    flag = false;
                    break;
                }
                if(cnt > 1) {
                    flag = false;
                    break;
                }
            }
        } else {
            while(keys.hasMoreElements()) {
                char c = keys.nextElement();
                if(numbers.get(c) % 2 != 0) {
                    flag = false;
                    break;
                }
            }
        }
        if(flag)
            System.out.println("True");
        else
            System.out.println("False");
    }
}