思路
奇奇怪怪的指针
看到题先想到了——维护两个指针数组 head[ ] next[ ], 分别表示从哪来到哪去
然后就每次修改数组,最后找到开头的字符 一直跳到 结尾
注意 数组下标不为负的特判 以及初始化
代码
#include<iostream>
#include <cstring>
using namespace std;
string s, c;
const int N = 1e6 + 5;
int __head[N], __next[N];
int x;
int main()
{
cin >> s>> c;
memset(__head, -1, sizeof(__head));
memset(__next, -1, sizeof(__next));
int n = s.length();
for(int i = 0; i < n - 1; i++)
{
if(c[i] == 'L')
{
if(__head[i] != -1)
__next[__head[i]] = i + 1;
__head[i + 1] = __head[i];
__head[i] = i + 1;
__next[i + 1] = i;
}
else
{
__head[__next[i]] = i + 1;
__next[i + 1] = __next[i];
__next[i] = i + 1;
__head[i + 1] = i;
}
}
for(int i = 0; i <c.length(); i++)
{
if(__head[i] == -1){
x = i;
break;
}
}
cout << s[x];
while(__next[x] != -1)
{
x = __next[x];
cout << s[x];
}
return 0;
} 


京公网安备 11010502036488号