标签:sed name cout 维护 ret cin namespace 解题思路 end
题目链接: UVA......
题目描述: 给出一个字符串, 其中遇到"["是光标到最前, 遇到‘]‘时光标又回到最后, 输出最后的文本
解题思路: 用到STL, 设置变量flag维护光标的位置, 当遇到纯字母时, 组合起来当做字符串处理, 在遇到下一个非纯字母时, 根据flag的状态一起插进deque的最前或者最后
代码:
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <deque> #include <iterator> using namespace std; deque<string> dq; int main() { string str; while( cin >> str ) { dq.clear(); string temp = ""; int len = (int)str.length(); int flag = 1; // 记录当前状态 0 (光标开头)1(光标末尾) int i = 0; while(1) { if( i >= len ) break; while( i < len && str[i] != ‘[‘ && str[i] != ‘]‘ ) { temp += str[i]; i++; } if( flag == 0 ) { dq.push_front(temp); } else { dq.push_back(temp); } temp = ""; if( str[i] == ‘[‘ ) { flag = 0; i++; } else { flag = 1; i++; } } deque<string>::iterator it; for( it = dq.begin(); it != dq.end(); it++ ) { cout << *it; } cout << endl; } return 0; }
思考: 这是以前自己认为很难的一道题,我记得是紫书上的, 当时想了半天也没做上来, 现在写出来了就说明自己真的进步了, 继续做题
UVA 11988 Broken Keyboard (a.k.a. Beiju Text) STL
标签:sed name cout 维护 ret cin namespace 解题思路 end
原文地址:http://www.cnblogs.com/FriskyPuppy/p/7241587.html