657. Judge Route Circle(sync_with_stdio)加速

来源:互联网 发布:毛星云windows 编辑:程序博客网 时间:2024/05/24 01:13

第一次用 CSDN 写博客哈,想把自己刷 leetcode 的所思所想所获得的东西写在一个地方,那就简单粗暴一点,用 CSDN 吧。

657. Judge Route Circle

leetcode 的第 657 题

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

是很简单的题目,但是把代码提交后发现速度不是很快,有好多大佬速度很快,在6ms完成,而我居然要30来ms。

class Solution {public:    bool judgeCircle(string moves) {        int L = 0, U = 0;        for (int i = 0; i < moves.length(); i++)        {            if (moves[i] == 'L')                L++;            else if (moves[i] == 'R')                L--;            else if (moves[i] == 'U')                U++;            else if (moves[i] == 'D')                U--;        }        if (L == 0 && U == 0)            return true;        else            return false;    }};

加了一段优化后

static string moves =[](){    std::ios::sync_with_stdio(false);    cin.tie(NULL);    return "";}();class Solution {public:    bool judgeCircle(string moves) {        int L = 0, U = 0;        for (int i = 0; i < moves.length(); i++)        {            if (moves[i] == 'L')                L++;            else if (moves[i] == 'R')                L--;            else if (moves[i] == 'U')                U++;            else if (moves[i] == 'D')                U--;        }        if (L == 0 && U == 0)            return true;        else            return false;    }};
std::ios::sync_with_stdio(false);cin.tie(NULL);

之前写的题目是用 cout 和 cin ,会 Timeout,如果用 printf 和 scanf 的话就能完成 AC 。之前只觉得cout cin 慢,原来是可以用这玩意加速的呀。

记住!