ありがとうございます。プロジェクトオイラーの最適化#22
私はちょうどファイルから約5,000行のテキストを読み込み、その文字列の合計とそのアルファベット順の位置に基づいて特定の名前の値を決定するという問題を解決しました。
しかし、コードの実行には約5-10秒かかってしまいますが、これはちょっと面倒です。このコードを最適化する最良の方法は何ですか?現在、スキャナを使用してファイルを文字列に読み込んでいます。これを行うための別の、より効率的な方法がありますか?あなたはここで行うように、「+」でループ内の文字列を追加は
public static int P22(){
String s = null;
try{
//create a new Scanner to read file
Scanner in = new Scanner(new File("names.txt"));
while(in.hasNext()){
//add the next line to the string
s+=in.next();
}
}catch(Exception e){
}
//this just filters out the quotation marks surrounding all the names
String r = "";
for(int i = 0;i<s.length();i++){
if(s.charAt(i) != '"'){
r += s.charAt(i);
}
}
//splits the string into an array, using the commas separating each name
String text[] = r.split(",");
Arrays.sort(text);
int solution = 0;
//go through each string in the array, summing its characters
for(int i = 0;i<text.length;i++){
int sum = 0;
String name = text[i];
for(int j = 0;j<name.length();j++){
sum += (int)name.charAt(j)-64;
}
solution += sum*(i+1);
}
return solution;
}
ありがとう!ちょうど簡単な質問:あなたが述べた実行時間は、それが問題のファイルを読んでそれでしたか? –
[/および] +の構文は何ですか? –
@JackK:ファイルを読んでからコレクションをソートするまでは、私がそこに書いたコード全体が対象でした。私は答えのパターンの説明を編集します。 – Amadan