样例输出:1 2 4 5 3 0
#include<iostream>
#include<string>
using namespace std;
const int N = 1e6 + 10;
int n, tot;
string s;
struct node{
int pre, next, value;
}list[N];
inline void insert_right(int pos,int x){
list[++tot].value = x;
list[tot].next = list[pos].next;
list[tot].pre = pos;
list[list[pos].next].pre = tot;
list[pos].next = tot;
}
inline void insert_left(int pos,int x){
//pos为上一个节点,tot为当前节点
list[++tot].value = x;
list[tot].next = pos;
list[tot].pre = list[pos].pre;
list[list[pos].pre].next = tot;
list[pos].pre = tot;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n;
cin >> s;
insert_right(0, 0);
for (int i = 0; i < n; i++){
if(s[i] == 'L') insert_left(tot, i + 1);
else if(s[i] == 'R') insert_right(tot, i + 1);
}
int j=0;
for(int i=1;i<=tot;i++){
j = list[j].next;
cout<<list[j].value<<" ";
}
return 0;
}
求关注