[C#][LeetCode][Easy] 657. Judge Route Circle

心得:

控制機器人走路,且最後必須回到起點,把它當作XY軸來理解的話很快就可以解答。
右 X + 1, 左 X – 1, 上 Y + 1, 下 Y – 1,最後 X 與 Y 皆為0則回傳true

問題:

Initially, there is a Robot at position (0, 0). Given a sequence of its moves, judge if this robot makes a circle, which means it moves back to the original place.

The move sequence is represented by a string. And each move is represent by a character. The valid robot moves are R (Right), L (Left), U (Up) and D (down). The output should be true or false representing whether the robot makes a circle.

Example 1:

Input: "UD"
Output: true

Example 2:

Input: "LL"
Output: false

答案:

public class Solution {
    public bool JudgeCircle(string moves) {
        int x = 0;
        int y = 0;

        foreach (var item in moves)
        {
            switch (item)
            {
                case 'U':
                    {
                        y++;
                        break;
                    }
                case 'D':
                    {
                        y--;
                        break;
                    }
                case 'R':
                    {
                        x++;
                        break;
                    }
                case 'L':
                    {
                        x--;
                        break;
                    }
            }
        }

        return (x == 0 && y == 0);
    }
}

答案 – Linq:

public class Solution {
    public bool JudgeCircle(string moves) {
        int x = moves.Where(p => p == 'U' || p == 'D').Sum(p => (p == 'U') ? 1 : -1);
        int y = moves.Where(p => p == 'R' || p == 'L').Sum(p => (p == 'R') ? 1 : -1);
        return x == 0 && y == 0;
    }
}

 



這裡的資訊對您有用嗎?歡迎斗內給我