这次我们要写一个简单的行编辑器,当按下‘#’时代表按下了一次退格符,当按下‘@’时代表一个退行符(使当前行的字符全部无效)。例如,假设从终端接收了这样的两行字符:
Whil#lr#e(s#*s)
[email protected](*s=#++)
则实际有效的是下列两行:
While(*s)
putchar(*s++)
请你编写一个程序,输出实际有效的字符串。
第一行是一个整数T,表示测试数据组数。
接下来每行为一个字符串(不含空格和任何空白),表示输入的原始字符串
输出最终的正确字符串。
2
Whil#lr#e(s#*s)
[email protected](*s=#++)
While(*s)
putchar(*s++)
1 #include<fstream> 2 #include<cstdio> 3 #include<string> 4 #include <iostream> 5 using namespace std; 6 7 string s; 8 char a[5005]; 9 int p; 10 int main() 11 { 12 int T; 13 scanf("%d", &T); 14 while (T--) { 15 int i,len; 16 cin>>s; 17 len=s.size(); 18 for(i=0;i<len;++i) 19 { 20 if(s[i]==‘@‘) 21 p=0; 22 else if(s[i]==‘#‘ && p>0) 23 --p; 24 else if(s[i]!=‘#‘) 25 a[++p]=s[i]; 26 } 27 for(i=1;i<=p;++i) 28 cout<<a[i]; 29 cout<<‘\n‘; 30 } 31 return 0; 32 }
时间: 2024-10-04 00:22:45