2012年1月30日月曜日

TopCoder SRM324 Div2 250Pts

このTopCoderの問題はこちらで見ることができる(要TopCoder登録 & 問題文は英語)。

頭韻とは、二つ以上の連続する単語が同じ文字で始まることをいう(大文字・小文字の区別は無視)。words[]という単語の配列が与えられたとき、それ以上拡張ができないもののみを考慮し、頭韻の数を返すメソッドを作成せよ(要は同じ頭文字で続くものが3つあった場合、2つ連続したものがが2つあると数えないという意味である)。

私の解答はこちら。

public class Alliteration {

 public int count(String[] words) {
  String str = "";
  for( int i=0 ; i<words.length ; i++ ){
   str += words[i].substring(0, 1).toLowerCase();
  }
  int n = 0;
  int cnt = 1;
  char c = str.charAt(0);
  for( int i=1 ; i<str.length() ; i++ ){
   if( str.charAt(i) == c ){
    cnt++;
    if( cnt == 2 ) n++; // 連続で2回続いたらカウント(3回以上は無視)
   }else{
    c = str.charAt(i);
    cnt = 1;
   }
  }
  return n;
 }

}

得点は238.33/250、中央値は約194点。わざわざfor文を2回にしなくても、1回のループで解くことができることには後から気付きましたとさ。

0 件のコメント:

コメントを投稿

フォロワー

ブログ アーカイブ

ページビューの合計