迷路的牛牛
迷路的牛牛
http://www.nowcoder.com/questionTerminal/fc72d3493d7e4be883e931d507352a4a
题目难度:一星
考察点:模拟
方法:模拟
- 分析:
按照题意模拟即可,判断向左走了多少步,向右走了多少步,然后得出向左向右走的步数的差值,然后对4进行取模,为什么对4取模呢?是因为一共有NSWE四个方向,所以需要对4取模,如果取模之后得到的结果ans是负数,那么ans=ans+4,因为向右走了1步等价于向左走了三步,然后根据相差的步数来判断到底是哪个方向,为了方便记录向左ans++,向右ans--:
算法实现:
(0). 遍历字符串s,然后如果当前字符为'L',那么ans++,否则ans--。
(1). 将ans对4取模,保证ans最后为区间属于[0,3]。
(2). 判断最后牛牛面向的方向:
如果ans = 0,那么牛牛最后面向的方向为N
如果ans = 1,那么牛牛最后面向的方向为W
如果ans = 2,那么牛牛最后面向的方向为S
如果ans = 3,那么牛牛最后面向的方向为E
复杂度分析:
时间复杂度:O(n)
空间复杂度:O(1)代码:
#include <bits/stdc++.h> using namespace std; int main() { int n; cin>>n; string s; cin>>s; int ans = 0; for(int i=0; i<n; i++) { if(s[i] == 'L') ans++; else ans--; } ans = (ans%4 + 4) % 4; if(ans == 0) cout<<"N"<<endl; if(ans == 1) cout<<"W"<<endl; if(ans == 2) cout<<"S"<<endl; if(ans == 3) cout<<"E"<<endl; return 0; }