このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。それでは、問題について説明する。
チャットの会話を受け取った。会話の1要素は1行に対応する。nameという人が何回発言したかを知りたい。このために、nameで会話が始まり、直後にコロンが来た回数を数える。この比較は大文字と小文字を区別するものとする。
私の解答はこちら。
public class ChatTranscript {
public int howMany(String[] transcript, String name) {
int cnt = 0;
// コロンで会話のテキストを区切って、先頭の要素とnameを比較する
for( int i=0 ; i<transcript.length ; i++ ){
if( transcript[i].contains(":") == false) continue;
String[] sp = transcript[i].split(":");
if( sp.length>0 && sp[0].equals(name) ) cnt++;
}
return cnt;
}
}得点は約85点。splitした後のif文でsp!=nullなどと書いていたのですが、提出までできてもシステムテストで落とされること数回。ようやく解答にたどりついたけど、何がダメなのか...

0 件のコメント:
コメントを投稿