1. 程式人生 > >CF Vicious Keyboard 構造水題

CF Vicious Keyboard 構造水題

題目說 在給定字串中 只能改變一個字元的情況下 求最大的VK字元的數量

分析

為了防止出錯 這裡要注意 為了防止VK判斷的時候
不影響其他的判斷 對於一個VK 我們最好不要把他刪掉刪掉後有可能會增加新的VK
就直接用特定值把原來的VK覆蓋掉
然後對於剩下的可能 最多隻能增加一個VK
就是通過 目標條件判斷 計數就可以


#include<bits/stdc++.h>
using namespace std;
int main()
{
    string l;
    getline(cin,l);
    int pos=0,c=0;
    while(l.find("VK"
,0)!=string::npos){ pos = l.find("VK",pos); l[pos]=32,l[pos+1]=32; c++; } int v=0,k=0; for(int i=0;i<l.length();i++){ if(l[i]=='V'&&(i+1)<l.length()&&l[i+1]!=32)v++; else if(l[i]!=32&&(i+1)<l.length()&&l[i+1]=='K'
)k++;//下標操作 注意判斷邊界條件 } if(v||k)c++; cout<<c<<endl; return 0; }