1112. Stucked Keyboard 解析
来源:互联网 发布:魔兽世界7.25mac版插件 编辑:程序博客网 时间:2024/06/06 17:00
这个题卡了好久..
之前没有理解好题意,卡住的一定是卡N次,如果那个按键有没有重复N次的情况就不算卡住。
我是靠不相同的时候判定重复次数的,这时候会出现一个特例,末尾是连续的。
例如:
3
aaaeee
这个时候末尾没有不相同的了。所以追加了一个单独的判定。
#include <iostream>#include <string>#include <cstring>#include <vector>#include <queue>#include <set>#include <map>using namespace std;int n;string s;queue <char> q;bool isVis[256];bool NotStack[256];bool isAns[256];int main() {cin >> n >> s;memset(isVis, false, sizeof(isVis));memset(NotStack, false, sizeof(NotStack));memset(isAns, false, sizeof(isAns));int p = 1, pre = 0;int times = 1;//遍历整个字符串 确定可能的串while (p < s.size()) {if (s[p] != s[pre]){if ((p - pre) % n == 0 && !isVis[int(s[pre])]) {//可能卡住且没有访问过q.push(s[pre]);isVis[int(s[pre])] = true;}pre = p;}if (p == s.size() - 1 && s[p] == s[pre] && (p - pre + 1) == n && !isVis[int(s[pre])]) {//最后一个单独处理//例如3 aaaeee最后一个不相同不会判定出来q.push(s[pre]);isVis[int(s[pre])] = true;}p++;}//遍历整个字符串 排除没有卡住的p = 1, pre = 0;while (p < s.size()) {if (s[p] != s[pre]) {if ((p - pre) % n != 0) {//没有卡住NotStack[int(s[pre])] = true;}pre = p;}p++;}//剔除没有卡住的键vector <char> fin;while (!q.empty()) {if (!NotStack[int(q.front())]) {fin.push_back(q.front());isAns[int(q.front())] = true;}q.pop();}//输出for (int i = 0; i < fin.size(); i++) {cout << fin[i];}cout << endl;for (int i = 0; i < s.size();i++) {cout << s[i];if (isAns[int(s[i])]) {i = i + n - 1;}}return 0;}
0 0
- 1112. Stucked Keyboard 解析
- PAT--1112. Stucked Keyboard
- 1112. Stucked Keyboard (20)
- 1112. Stucked Keyboard (20)
- 1112. Stucked Keyboard (20)
- 1112. Stucked Keyboard
- 1112.Stucked Keyboard (20)
- 1112. Stucked Keyboard (20)
- 1112. Stucked Keyboard (20)
- 1112. Stucked Keyboard (20)
- 1112. Stucked Keyboard
- 1112. Stucked Keyboard (20)
- 【PAT】1112. Stucked Keyboard
- 1112. Stucked Keyboard (20)
- 1112. Stucked Keyboard (20)
- pat 1112. Stucked Keyboard
- pat 1112. Stucked Keyboard
- 1112. Stucked Keyboard (20)
- DHT技术原理
- 欢迎使用CSDN-markdown编辑器
- 反射实现 AOP 动态代理模式(Spring AOP 的实现 原理)
- Data Grid后台代码添加column
- ueditor上传文件
- 1112. Stucked Keyboard 解析
- 错误的trim和正确的trim(C++)
- oracle中trunc函数的简单使用
- hibernate二级缓存配置步骤、方法
- Myeclispse破解使用
- 普通用户echo权限不够问题
- AngularJS系列——双向绑定和依赖注入
- 通俗理解信息熵
- Linux命令行与shell脚本(17)--正则表达式