1

これは poj 問題です - http://poj.org/problem?id=2136 簡単な問題だと思いますが、オンラインの審査員は私の解決策を受け入れていません。「間違った解決策」と書かれています。質問に記載されているように、余分なスペースや余分な行がないことを確認しました。誰かが私が間違っているところを指摘してもらえますか?

import java.util.Iterator;
import java.util.Scanner;
import java.util.TreeMap;
public class poj2136 {

public static void main(String[] args) 
{
    // TODO Auto-generated method stub

    Scanner sc = new Scanner(System.in);
    int counter = 0;
    TreeMap<Character,Integer> hm_frequency = new TreeMap<Character,Integer>();
    while(counter<4)
    {
        String line = sc.nextLine();
        String words[] = line.split(" ");
        for(String word: words)
        {
            //System.out.println(word);
            for(int i=0; i<word.length();i++)
            {
                char key = word.charAt(i);
                if((int)key>64 && (int)key<91)
                {
                    if(hm_frequency.containsKey(key))
                    {
                        hm_frequency.put(key,hm_frequency.get(key)+1);
                    }
                    else
                    {
                        hm_frequency.put(key,1);
                    }
                }
            }

        }
        counter++;
    }

    while(true)
    {           
        int max_value = maxvalue(hm_frequency);
        char ch = maximumchar(hm_frequency, max_value);
        if(max_value == 0)
        {
            break;
        }
        Iterator iter = hm_frequency.keySet().iterator();
        int stop_flag = 0;
        while(iter.hasNext() && stop_flag==0)
        {
            char key = (Character) iter.next();
            if (key== ch)
            {
                stop_flag = 1;
            }
            if(hm_frequency.get(key)== max_value)
            {
                hm_frequency.put(key, max_value-1);
                if(stop_flag == 0)
                System.out.print("* ");
                else
                System.out.print("*");  
            }
            else
            {
                if(stop_flag == 0)
                System.out.print("  ");
                else
                System.out.print(" ");
            }
        }

        System.out.println();
    }       
    Iterator iter = hm_frequency.keySet().iterator();
    while(iter.hasNext())
    {
        char key = (Character) iter.next();
        if(iter.hasNext())
        System.out.print(key+" ");
        else
        System.out.print(key);
    }
}

public static char maximumchar(TreeMap<Character,Integer> hm_frequency, int max_value)
{
    Iterator iter = hm_frequency.keySet().iterator();
    char ch = '.';
    while(iter.hasNext())
    {
        char key = (Character) iter.next();
        int value = hm_frequency.get(key);
        if(value==max_value)
        {
            ch = key;
        }
    }
    return ch;
}

public static int maxvalue(TreeMap<Character,Integer> hm_frequency)
{
    Iterator iter = hm_frequency.keySet().iterator();
    int max = 0;
    while(iter.hasNext())
    {
        char key = (Character) iter.next();
        int value = hm_frequency.get(key);
        if(value>max)
        {
            max = value;
        }
    }
    return max;
}

}
4

1 に答える 1

2

完全なアルファベットを出力する必要があり、テキスト内の文字のみを印刷しています。

スペースで区切られた大文字のアルファベット

于 2013-10-27T20:04:22.463 に答える