https://vjudge.net/problem/UVA-11988
#include<iostream>
#include<cstring>
using namespace std;
#pragma warning(disable:4996)
int cur,last,nex[100005];
char s[100005];
int main() {
#ifdef _DEBUG
//freopen("in", "r", stdin);
//freopen("out", "wb", stdout);
#endif // _DEBUG
while (scanf("%s",s+1)==1) {
int n = strlen(s + 1);
cur = last = nex[0] = 0;
for(int i=1;i<=n;++i)
switch (s[i])
{
case '['://Home
cur = 0;
break;
case ']'://End
cur = last;
break;
default:
nex[i] = nex[cur];
nex[cur] = i;
if (cur == last) last = i;
cur = i;
break;
}
for (int i = nex[0]; i != 0; i = nex[i])
cout << s[i];
cout << endl;
}
}
本文介绍了一种用于处理字符串的导航算法,该算法通过使用特殊的字符来实现字符串中的位置移动,例如移动到开头('[')或结尾(']')。此外,还提供了一个C++实现示例,展示了如何使用额外的数组来记录当前位置并进行相应的操作。

1651

被折叠的 条评论
为什么被折叠?



