题目描述
每天签到一个应用程序,至少可以得 1 分,若前一天也签到了,则当天得分为前一天的得分加 1,一天最多只能得 55分。
给定一个由
Y
及N
构成的字符序列,该序列表示小爱每天签到的情况,签到记为Y
,没到记为N
。请统计小爱能够获得的总积分。输入格式
一个字符序列:保证仅由字母
Y
及N
组成。输出格式
单个整数,表示获得的积分总数。
数据范围
设 𝑛n 表示字符序列的长度,1≤𝑛≤100,000。
>>>>>>分割线>>>>>>>>>>>>>分割线>>>>>>>>>>>>>分割线>>>>>>>>>>>>>分割线>>>>>>>
思路
1.连续签到,n++,最大值为5,则用min(5,n)
不管n值多大,最大只能取到5
程序
#include <bits/stdc++.h>
using namespace std;
string s;
int ans = 0;
int n = 0;
int main() {
cin >> s;
for (int i=0; i<s.size(); i++) {
if (s[i]=='Y') { // 签到
n++; / /比上次签到多1分
ans += min(5, n); // 最多5分
} else { // 没签到
n = 0;
}
}
cout << ans << endl;
return 0;
}