1112. Stucked Keyboard (20) (字符串处理)

来源:互联网 发布:php解析markdown 编辑:程序博客网 时间:2024/06/03 17:25

题目地址

https://www.patest.cn/contests/pat-a-practise/1112

很逗的解法

#include <cstdio>#include <cstdlib>#include <cmath>#include <cstring>#include <iostream>#include <string>#include <vector>#include <queue>#include <algorithm>#include <sstream>#include <stack> #include <map> #include <unordered_map> #include <unordered_set> using namespace std;  map<char,vector<int>> mp;int K;struct data{    char c;    int count;};vector<data> v;int main(){      //freopen("in.txt", "r", stdin);      while(scanf("%d",&K) != EOF)    {        string s;        getchar();        getline(cin,s);        map<char,bool> mpNot;        s = s + "#";        int len = s.size();        int cnt = 1;        for(int i=1;i<len;i++)        {            if(s[i] != s[i-1])            {                if(cnt % K != 0) // 每一次的单独出现都应该是K的倍数,否则就不对                {                    mpNot[s[i-1]] = true;                }                mp[s[i-1]].push_back(cnt);                data dt;                dt.c = s[i-1];                dt.count = cnt;                v.push_back(dt);                cnt = 1;            }else{                cnt ++;            }        }        vector<char> rs;        map<char,int> ans;        for(int i=1;i<len-1;i++)        {            if(mpNot[s[i]] == true)            {            }else{                if(ans[s[i]] == 0)                {                    rs.push_back(s[i]);                    ans[s[i]] = 1;                }            }        }        vector<char>::iterator it = rs.begin(); // 打印broken        while(it != rs.end())        {            printf("%c",*it);            ++it;        }        printf("\n");        int vLen = v.size();        for(int i= 0; i< vLen;i++)        {            if(ans[v[i].c] != 1)            {                while(v[i].count --)                    printf("%c",v[i].c);            }else{                int tmp = v[i].count / K;                while(tmp --)                    printf("%c",v[i].c);            }        }        printf("\n");        ans.clear();        mp.clear();        v.clear();    } // end while    return 0;  }  
0 0
原创粉丝点击