落書きノート

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

Javaで問題を解く

問題文を見ながら少々考えてました。回文をチェックした後、意味のある単語に並び替えろという出力に見えたので、これで考えすぎました。回文のチェックだけで良かったんですね。これなら簡単です。ハッシュテーブルを使うと簡単にできますね。問題1.4です。毎度のことながら計算量は無視してます。慣れてきたら考えてみます。配列で地道に考えてもそんなに難しくはないですね。

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

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

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

class q1_4 {
    public static void main(String[] args) {
        Hashtable<String, Integer> numbers =
            new Hashtable<String, Integer>();
        Scanner scan = new Scanner(System.in);
        String input = scan.nextLine();
        String[] split = input.toLowerCase().split("");
        for(String s : split)
            if(numbers.containsKey(s))
                numbers.put(s, numbers.get(s) + 1);
            else if(s.equals(" "))
                continue;
            else
                numbers.put(s, 1);
        int cnt = 0;
        boolean flag = true;
        for(int i = 0; i < split.length; i++) {
            if(split[i].equals(" "))
                continue;
            else if(numbers.get(split[i]) == 1)
                cnt++;
            else if(numbers.get(split[i]) % 2 != 0) {
                flag = false;
                break;
            }
            if(cnt > 1) {
                flag = false;
                break;
            }
        }

        if(flag)
            System.out.println("True");
        else
            System.out.println("False");
    }
}