题目难度:一星
考察点:模拟

方法:模拟

  1. 分析:
    按照题意模拟即可,判断向左走了多少步,向右走了多少步,然后得出向左向右走的步数的差值,然后对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

  1. 复杂度分析:
    时间复杂度:O(n)
    空间复杂度:O(1)

  2. 代码:

    #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;
    }