假设我们有一个仅包含L和R的字符串,分别表示向左旋转和向右旋转,我们必须找到枢轴的最终方向。这里的方向是北(N),东(E),南(S)和西(W)。我们假设枢轴在指南针中指向北(N)。
因此,如果输入类似于“ RRLRLLR”,则输出将为E,初始方向为N,RR将指向S,然后LR将再次指向相同的N,然后LL将指向先前的位置N,然后R将指向E。因此E是最终的。
为了解决这个问题,我们将遵循以下步骤-
计数:= 0
方向:=空白字符串
对于初始化i:= 0,当i-s的长度时,更新(将i增加1),执行-
(增加1)
(将计数减少1)
如果s [i]与'L'相同,则-
除此以外
如果count> 0,则-
方向:=“ W”
方向:=“ S”
方向:=“ E”
方向:=“ N”
如果count mod 4与0相同,则-
否则,当count mod 4与1相同时,则-
否则,当count mod 4与2相同时,则-
否则,当count mod 4与3相同时,则-
如果count <0,则-
方向:=“ E”
方向:=“ S”
方向:=“ W”
方向:=“ N”
如果count mod 4与0相同,则-
否则,当count mod 4与-1相同时,则-
否则,当count mod 4与-2相同时,则-
反之,当count mod 4与-3相同时,则-
返回方向
让我们看下面的实现以更好地理解-
#include<bits/stdc++.h> using namespace std; string get_dir(string s) { int count = 0; string direction = ""; for (int i = 0; i < s.length(); i++){ if (s[0] == '\n') return NULL; if (s[i] == 'L') count--; else count++; } if (count > 0){ if (count % 4 == 0) direction = "N"; else if (count % 4 == 1) direction = "E"; else if (count % 4 == 2) direction = "S"; else if (count % 4 == 3) direction = "W"; } if (count < 0){ if (count % 4 == 0) direction = "N"; else if (count % 4 == -1) direction = "W"; else if (count % 4 == -2) direction = "S"; else if (count % 4 == -3) direction = "E"; } return direction; } int main() { string s = "RRLRLLR"; cout << (get_dir(s)); }
"RRLRLLR"
输出结果
E