1112. Stucked Keyboard (20) hash
2016-04-08 20:23
471 查看
题目地址
#include<iostream> #include<string> #include<vector> using namespace std; const int maxn = 256; bool hashTable[maxn] = {0}; //标记是否坏键 bool vis[maxn] = {0}; //标记是否输出坏键 struct Key{ char c; int time; //字符出现次数 }key; int k; string s; vector<Key> origin; //记录坏键 vector<int> cnt[maxn]; //记录所有坏键的所有出现次数 bool Check(int c){ //检查是否是坏键 for(int i = 0;i < cnt[c].size();i++){ if(cnt[c][i]%k) return 0; } return 1; } int main(){ cin >> k >> s; for(int i = 0;i < s.size();){ char c = s[i]; int j = i; while(j<s.size()&&s[j]==s[i]) j++; key.c = c; key.time = j-i; cnt[c].push_back(j-i); origin.push_back(key); i = j; } for(int c = 0;c < maxn;c++){ if(cnt[c].size() && Check(c)) hashTable[c] = 1; //坏键 } for(int i = 0;i < origin.size();i++){ char c = origin[i].c; if(hashTable[c] && vis[c]==0){ cout << c; //输出坏键 vis[c] = 1; } } cout << endl; for(int i = 0;i < origin.size();i++){ char c = origin[i].c; int T = hashTable[c]?origin[i].time/k:origin[i].time; for(int j = 0;j < T;j++){ cout << c; } } cout << endl; return 0; }
相关文章推荐
- 用C++编写小学生随机十道练习题的步骤以及源代码
- Java并发编程:阻塞队列
- POJ 3592 缩点加spfa
- 【蓝桥杯】历届试题 公式求值
- Spark MLlib Deep Learning Convolution Neural Network (深度学习-卷积神经网络)3.1
- CI 笔记(1)
- 【摘自乌云】内网渗透笔记
- 软件工程需求分析
- mysql索引提高优化order by语句用法介绍
- 【bzoj3124】: [Sdoi2013]直径
- JS函数名加括号和不加括号的区别
- 七层协议入门
- 字符串运用-密码截取(华为oj)
- 汉堡--结对--软件工程
- LeetCode 28 Implement strStr()
- 硬链接和软连接
- sql 、linq、lambda 查询语句的区别
- mysql索引提高优化order by语句用法介绍
- 基于Spring3 MVC实现基于form表单上传Excel文件,批量导入数据!
- .NET winform 在listview中添加progressbar