SRM 538 Div2 Easy LeftOrRight

問題

右と左に命令させロボットを動かす時,最初の点から最も離れた距離を返せ.
但し命令がわからない箇所('?'で表される)があるので,その場合答えが最も大きくなるように右か左に操作する.

解答

'?'を全て右,全て左に移動した時の距離を計算し,大きい方を返せば良い.

class LeftOrRight
{
public:
  int maxDistance(string program)
    {
      int ld = 0;
      int rd = 0;
      int res = 0;
      for(int i = 0; i < program.size(); i++){
        if(program[i] == 'L') {ld++; rd--;}
        else if (program[i] == 'R') {rd++; ld--;}
        else{
          ld++;
          rd++;
        }
        res = max(res, max(ld, rd));
      }
      return res;
    }
};