【TopCoder】SRM 158 DIV2 Lv.1
SRM 158 DIV2 Lv.1
問題文概略
文字列を規則にそって並べ替える。
書いたコード
全パターンが4つだったので、すべて書いた。 汎用性がない。。
public class TireRotation { public int getCycle(String initial, String current) { String char1 = initial.substring(0,1); String char2 = initial.substring(1,2); String char3 = initial.substring(2,3); String char4 = initial.substring(3,4); String str1 = char1 + char2 + char3 + char4; String str2 = char4 + char3 + char1 + char2; String str3 = char2 + char1 + char4 + char3; String str4 = char3 + char4 + char2 + char1; int ans = 0; if (current.equals(str1)) { ans = 1; } else if(current.equals(str2)) { ans = 2; } else if(current.equals(str3)) { ans = 3; } else if(current.equals(str4)) { ans = 4; } else { ans = -1; } return ans; } }
他の参加者のコードを読んで修正した
public class TireRotation { public int getCycle(String initial, String current) { for(int i = 1; i <= 4; i++) { if(initial.equals(current)) return i; initial = rotate(initial); } return -1; } String rotate(String x) { char[] v = x.toCharArray(); char tmp = v[0]; v[0] = v[3]; v[3] = v[1]; v[1] = v[2]; v[2] = tmp; return new String(v); } }
雑感
文字列を一文字ずつ取得しようと思いsubstringを使ったのだが、toCharArrayで文字列を配列にする方法もあるのか。
文字列を比較するときは == ではなく、str.equals(str1)を使うこと。