件名の説明:
バイナリ文字列の長さを考慮すると、3で除算した余りを探します
アイデアの分析:
除算3の残りの部分にのみ0,1,2することができますので、ここでは、ステートマシンになります。だから、3つのステートマシンの状態があります。午前1時00分に直面したとき今、一つ一つがバイナリ文字列を横断するために、初期の余りが0である、状態1に行く、状態はまだ0時00分0を経験しています。状態1では、状態0が決定され、1変換遭遇した:0、状態2〜2の、すなわち、残りが発生しました。1、すなわち、残りは状態0~0である、遭遇。これは、1プラス2の1当量を添加することにより、2その後追加された各番号0に相当するため、求めることができます。
コード:
1 INT numRest(ストリングS) 2 { 3 int型 N = s.length()。 4 INT RES = 0 。 5 ためには、(int型、I = 0 ; iがN <; I ++は) 6 { 7 場合(RES == 0 ) 8 { 9 もし(S [I] == ' 0 ' ) 10の RES = 0 。 11の 他 12 RES = 1 。 13 } 14 そう なら(RES == 1 ) 15 { 16 であれば(S [I] == ' 0 ' ) 17 のRES = 2 。 18の 他 19 RES = 0 。 20 } 21 他の 22 { 23 であれば(S [I] == ' 0 ' ) 24 のRES = 1 。 25の 他 26 RES = 2 。 27 } 28 } 29の リターンRES。 30 }