最优打字策略
Table of Contents
最优打字策略
题目描述
在英文的输入中,我们经常会遇到大小写切换的问题,频繁切换大小写会增加我们的按键次数,也会降低我们的打字效率。
众所周知,切换大小写有两种方式,一种是按下“caps locks”,也就是大写锁定键,这样一来,之后的输入模式都会被切换。另一种是同时按下shift和需要打印的字母,可以临时切换大小写(算作按下两个键)。
已知初始状态下,打字模式是小写,现在给出需要打印的字符串(区分大小写),请你计算出最少需按键多少次才能打印出来。
输入
输入第一行仅包含一个正整数n,表示字符串的长度(1<=n<=1000000)。
输入第二行包含一个长度为n的字符串,仅包含大小写字母。
输出
输出仅包含一个正整数,即最少的按键次数。
样例输入
6
AaAAAA
样例输出
8
#include<bits/stdc++.h>
typedef long long ll;
const int maxn = 1e3 + 5;
const int INF = 0x3f3f3f3f;
const int MOD = 1e9 + 7;
using namespace std;
int main() {
int n, flag = 0, sum;
string p;
cin >> n >> p;
sum = p.length();
for (int i = 0; i < p.length(); i++) {
if (p[i] > 'Z' && flag == 1) {
if (i + 1 < p.length() && p[i + 1] > 'Z') {
flag = 0;
}
sum++;
}
else if (p[i] < 'a' && flag == 0) {
if (i + 1 < p.length() && p[i + 1] < 'a') {
flag = 1;
}
sum++;
}
}
cout << sum << endl;
return 0;
}
据说上面的代码是正确答案,但是没看懂