zoukankan      html  css  js  c++  java
  • 1112 Stucked Keyboard (20 分)

    题目:https://pintia.cn/problem-sets/994805342720868352/problems/994805357933608960

     1 #pragma warning(disable:4996)
     2 #define _CRT_SECURE_NO_WARNINGS
     3 
     4 #include <iostream>
     5 #include <map>
     6 #include <set>
     7 #include <string>
     8 #include <cctype>
     9 #include <stack>
    10 #include <vector>
    11 using namespace std;
    12 
    13 int main()
    14 {
    15     int N;
    16     cin >> N;
    17     string s;
    18     getchar();
    19     getline(cin, s);//可能会遇到空格,所以用getline读入,但是貌似直接读也能AC
    20     int i = 0;
    21     int cnt = 1;
    22     map<char, bool> is;//是否是坏键
    23     map<char, bool> finished;//标志不是坏键,只要出现重复次数cnt,有cnt%N!=0的情况,即可判断不是坏键
    24     while (i < s.size())
    25     {
    26         if (s[i] == s[i + 1] && i != s.size() - 1)
    27         {
    28             ++i;
    29             ++cnt;
    30         }
    31         else
    32         {
    33             if (cnt % N == 0 && finished[s[i]] == false)
    34             {
    35                 is[s[i]] = true;
    36             }
    37             else
    38             {
    39                 finished[s[i]] = true;
    40                 is[s[i]] = false;
    41             }
    42             cnt = 1;
    43             ++i;
    44         }
    45     }
    46     i = 0;
    47     vector<char>show;
    48     set<char> sset;
    49     for (int i = 0; i < s.size(); ++i)//顺序输出坏键处理
    50     {
    51         if (sset.find(s[i]) == sset.end() && is[s[i]])
    52         {
    53             sset.insert(s[i]);
    54             show.push_back(s[i]);
    55         }
    56     }
    57     for (int i = 0; i < show.size(); ++i)
    58     {
    59         cout << show[i];
    60     }
    61     cout << endl;
    62     while (i < s.size())
    63     {
    64         cout << s[i];
    65         if (is[s[i]])
    66             i += N;
    67         else
    68             ++i;
    69     }
    70     cout << endl;
    71     return 0;
    72 }
  • 相关阅读:
    Callable的Future模式
    并发队列
    并发工具类和线程池
    安全与死锁问题
    ConcurrentHashMap底层实现
    Map集合常见面试题
    List集合框架
    类加载器
    Activiti中个人任务分配
    流程定义
  • 原文地址:https://www.cnblogs.com/2020R/p/14417171.html
Copyright © 2011-2022 走看看