AOJ0077 Run Length
問題リンク Run Length
- 解法
文字列を先頭から見ていき、'@'以外ならそのまま。'@'なら復元処理をします。
ちょっとした工夫の話をします。
文字列を作るときに
String ans = "";
としておいて、+文字列連結演算子で復元文字列を作っても勿論いいですが、Stringは不変クラスなので+連結するたびに新しいStringがnewされます。
この問題のように小さなサイズなら問題ないですが、長さ10^6の文字列sに
s += "hoge"
とかやると結構重くなります。
なので、文字列を生成するときはStringBuilderを使うと速いです。
- ソース
import java.util.Scanner; //Run Length public class AOJ0077 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ char[] s = sc.next().toCharArray(); StringBuilder sb = new StringBuilder(); int i = 0; while(i<s.length){ if(s[i]=='@'){ int x = s[++i]-'0'; i++; while(x--!=0)sb.append(s[i]); } else sb.append(s[i]); i++; } System.out.println(sb); } } }