题意:你在输入文本,插入点会不时跳到最前面或最后面,输出实际得到的文本。
思路:实际上这题涉及到了在字符串任何位置插入字符,所以用链表模拟。真是菜,模拟个链表还要调试半天。。不过做题用的链表和通常的不太一样,没有使用指针(当然用指针也是可以的),写的时候,一定要搞清楚三个位置,链表头,插入点,链表尾。
#include <iostream>
#include <stdio.h>
#include <cmath>
#include <algorithm>
#include <iomanip>
#include <cstdlib>
#include <string>
#include <memory.h>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <set>
#include <ctype.h>
#define INF 1000000010
#define ll long long
#define max3(a,b,c) max(a,max(b,c))
#define MAXN 1000
using namespace std;
char text[100010];
char ans[100010];
int next[100010];
int main(){
while(~scanf("%s",text)){
int len=strlen(text);
int cur=0;
int k=0;
int last=0;
next[0]=-1;
for(int i=0;i<len;i++){
if(text[i]=='['){
cur=0;
}else if(text[i]==']'){
cur=last;
}else{
k++;
ans[k]=text[i];
int tmp=next[cur];
next[cur]=k;
next[k]=tmp;
if(next[k]==-1)last=k;
cur=k;
}
}
int t=next[0];
while(t!=-1){
printf("%c",ans[t]);
t=next[t];
}
cout<<endl;
}
return 0;
}
博客讲述一个文本输入问题,插入点会跳到首尾,需输出实际文本。解题思路是用链表模拟在字符串任意位置插入字符,此链表与通常链表不同,未用指针,解题时要明确链表头、插入点和链表尾三个位置。
1594

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



