PAT甲级1112 Stucked Keyboard:[C++题解]卡住的键盘、双指针、去重
生活随笔
收集整理的這篇文章主要介紹了
PAT甲级1112 Stucked Keyboard:[C++题解]卡住的键盘、双指针、去重
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目分析
- 題目來源
題目分析
來源:acwing
分析
雙指針算法來統計連續出現的字符的次數,如果 %k 不為0說明不是卡住的字母,做好標記。
再次遍歷字符串,壞的輸出,順便統計正常的字符串是啥。
AC代碼
#include<bits/stdc++.h> using namespace std;const int N = 200; //需要用到小寫字母的ASCII碼值 int st[N]; int main(){int k;cin >> k;string s;cin >> s;//雙指針for(int i =0; i<s.size();i++){int j = i + 1;while(j < s.size() && s[j] == s[i]) j++;int len = j - i ;if(len % k) st[s[i]] = 1; //不是壞的i = j -1; // i跳到j后面的位置}string res;for(int i = 0; i<s.size(); i++) {if(!st[s[i]]) cout<<s[i],st[s[i]] = 2; //壞的已經被輸出,做好標記防止重復輸出if(st[s[i]] == 1) res += s[i];else{res += s[i];i+= k-1; // 壞的僅需要加一個,所以需要跳k個}}cout<<endl;cout<<res<<endl;}題目來源
PAT甲級1112 Stucked Keyboard
https://www.acwing.com/problem/content/1604/
總結
以上是生活随笔為你收集整理的PAT甲级1112 Stucked Keyboard:[C++题解]卡住的键盘、双指针、去重的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PAT甲级1076 Forwards o
- 下一篇: PAT甲级1116 Come on! L