IDEを使ってJavaを書いているとこういうときに困る

ある企業のペーパーテストに出た問題。「入力された文字列のうち、1回しか登場しないもので最も左に出現する文字を出力するプログラムを書け」

before

私の回答 (クラス名が"Q2"なのは、問2だったから):

import java.map.*;
import java.list.*;

public class Q2 {
    public static void main(String[] args) {
        if(args.length != 1) System.err.println("Usage: java Q2 phrase");
        String phrase = args[0];
        Map<Character, Integer> chars = new LinkedHashMap<Character, Integer>();
        for(char c : phrase.toCharArray()) {
            chars.put(c, chars.get(c) == null ? 1 : chars.get(c)+1);
        }
        for(Map.Entry<Character, Integer> e : chars.entryList()) {
            if(e.getValue() == 1) {
                System.out.println(e.getKey());
                exit;
            }
        }
    }
}

問題点

after

ということで以下のようになった:

import java.util.*;

public class Q2 {
    public static void main(String[] args) {
        if(args.length != 1) {
            System.err.println("Usage: java Q2 phrase");
            System.exit(-1);
        }
        String phrase = args[0];
        Map<Character, Integer> chars = new LinkedHashMap<Character, Integer>();
        for(char c : phrase.toCharArray()) {
            chars.put(c, chars.get(c) == null ? 1 : chars.get(c)+1);
        }
        for(Map.Entry<Character, Integer> e : chars.entrySet()) {
            if(e.getValue() == 1) {
                System.out.println(e.getKey());
                break;
            }
        }
    }
}

まあ1次選考は突破できたのでよかったが、みんなもIDEに頼りすぎるのはやめようね!

タグ
© 2001-2008 Chisa YOUZAKA. Some rights reserved.