【TopCoder】SRM 155 DIV2 Lv.1
SRM 155 DIV2 Lv.1
問題文概略
特定の文字列を数字に変換する
書いたコード
解けなかった。 一時文字ずつ文字を調べていき、'X'が連続して出た数と’-’が出た数を数え、それぞれ数字に変換しようとしたが泥沼にはまった。
他の参加者のコードを読んで修正した
public class Quipu { public int readKnots(String knots) { int number = 0; int lengthX = 0; for (int i = 0; i < knots.length(); i++) { if(knots.length() == 'X') { lengthX++; } else { number = number * 10 + lengthX; lengthX = 0; } } return number; } }
public class Quipu { public int readKnots(String knots) { knots += "$"; String ans = ""; for(String x : knots.split("-")) { if(!x.equals("$")) { ans += x.length(); } } return Integer.parseInt(ans); } }
雑感
数字を並べていく問題は「10倍して足していく」という手法が使えることを覚えておこう。
2つ目のコードは赤色コーダーさんのもの。こんな風にうまいこと考えられるようになりたい。