AC代码(只要遍历一遍把有两个字母的方向记录下来然后*2就可以了)
Select Code
#include <iostream>
#include <bits/stdc++.h>
#define maxn 1000000007
using namespace std;
char c[100000+10];
int main()
{
freopen("INPUT.TXT", "r", stdin);
freopen("OUTPUT.TXT","w",stdout);
int i;
cin>>c;
long long sm = 1;
int n = strlen(c);
c[n] = '#';
for(i = 0;i<n;i++)
{
if(c[i]=='N'&&c[i+1]=='E')
{
sm*=2;
sm%=maxn;
}
if(c[i]=='S'&&c[i+1]=='E')
{
sm*=2;
sm%=maxn;
}
if(c[i]=='S'&&c[i+1]=='W')
{
sm*=2;
sm%=maxn;
}
if(c[i]=='N'&&c[i+1]=='W')
{
sm*=2;
sm%=maxn;
}
}
printf("%lld\n",sm);
return 0;
}