3

Facebook ハッカソン 2013 http://argote.mx/?p=353"> here にあった簡単な質問の 1 つを実装しようとしています。

抜粋: 文字列 s が与えられたとき、小さなジョニーは文字列の美しさの合計として文字列の美しさを定義しました。各文字の美しさは 1 から 26 までの整数であり、2 つの文字が同じ美しさを持つことはありません。ジョニーは文字が大文字か小文字かを気にしないので、それは文字の美しさに影響しません。あなたは学生で、この有名なハッカーの青春についてレポートを書いています。ジョニーが最も美しいと思う弦を見つけました。この弦の最大の美しさは何ですか?

個々の文字を特定の数字にマッピングすることに基づいて、独自のソリューションを実装しました。

コードは次のとおりです。

package samplecodes;

import java.io.BufferedReader;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.StringTokenizer;

public class StringBeauty {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        ArrayList<String> input= new ArrayList<String>();
        try{

            FileReader f1 = new FileReader(args[0]);
            BufferedReader f = new BufferedReader(f1);
            String newLine;
            while ((newLine=f.readLine()) != null){
                   StringTokenizer st = new StringTokenizer(newLine);
                   while (st.hasMoreTokens()) {
                      String string= st.nextToken(); 
                      input.add(string);

                   }

                   for(String i: input)
                       System.out.println("input "+i);
                   ///printLower(input);

                   calculateStringBeauty(input);
                   input.clear();


}

        }

            catch(Exception e){
                e.printStackTrace();
        }
    }


    public static void calculateStringBeauty(ArrayList<String> input){

        /** mapping based on analysing input string**/

        HashMap<Character,Integer> map= new HashMap<Character,Integer>();
        map.put( Character.valueOf('a'),24);
        map.put( Character.valueOf('b'),25);
        map.put( Character.valueOf('c'),26);
        map.put( Character.valueOf('d'),1);
        map.put( Character.valueOf('e'),2);
        map.put( Character.valueOf('f'),3);
        map.put( Character.valueOf('g'),4);
        map.put( Character.valueOf('h'),5);
        map.put( Character.valueOf('i'),6);
        map.put( Character.valueOf('j'),7);
        map.put( Character.valueOf('k'),8);
        map.put( Character.valueOf('l'),9);
        map.put( Character.valueOf('m'),10);
        map.put( Character.valueOf('n'),11);
        map.put( Character.valueOf('o'),12);
        map.put( Character.valueOf('p'),13);
        map.put( Character.valueOf('q'),14);
        map.put( Character.valueOf('r'),15);
        map.put( Character.valueOf('s'),16);
        map.put( Character.valueOf('t'),17);
        map.put( Character.valueOf('u'),18);
        map.put( Character.valueOf('v'),19);
        map.put( Character.valueOf('w'),20);
        map.put( Character.valueOf('x'),21);
        map.put( Character.valueOf('y'),22);
        map.put( Character.valueOf('z'),23);
        int sum=0;
        for(String i: input){
        i=i.toLowerCase();
        //  System.out.println("i "+i);
        char[] array= i.toCharArray();

        for(char a: array){
        if(map.containsKey(a))
            sum+=map.get(a);
        else
            continue;
        }

        }
        System.out.print(sum);
        System.out.println();

        }
}

私のソリューションは、テストケースの1つで完全に機能するようです。ABbCcc-> 152、これは正しくマッピングされますが、 So I just go consult Professor Dalves -> 392(私のコードによると)。646ただし、提供されたテスト ケースによると、 のビューティー値を返すことが期待されます。

私のコードをデバッグする際の助けや、アルゴリズムを改善するための提案をいただければ幸いです。

4

2 に答える 2