首页 > 试题广场 >

小红的大小写字母

[编程题]小红的大小写字母
  • 热度指数:2082 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}小红拿到了一个仅由大小写字母构成的长度为 n 的字符串,她每次操作可以将一个字符在大小写之间切换(例如将 \texttt{`a'} 变为 \texttt{`A'},或将 \texttt{`Y'} 变为 \texttt{`y'})。
\hspace{15pt}她希望经过恰好 k 次操作后,大写字母的数量尽可能多。请输出最终字符串中大写字母的数量。

输入描述:
\hspace{15pt}在一行上输入两个整数 nk1 \leqq n \leqq 10^5,\ 1 \leqq k \leqq 10^9)。 
\hspace{15pt}在一行上输入一个长度为 n、由大小写字母构成的字符串 s


输出描述:
\hspace{15pt}在一行上输出一个整数,表示经过恰好 k 次操作后,最终字符串中大写字母的数量。
示例1

输入

1 3
A

输出

0

说明

\hspace{15pt}只有一个字符,操作序列 \texttt{A}\to\texttt{a}\to\texttt{A}\to\texttt{a} 后没有大写字母。
示例2

输入

5 3
arBrg

输出

4

说明

\hspace{15pt}可以对第 1、2、4 个字符操作,得到 \texttt{,共有 4 个大写字母。
n, k = map(int, input().split())
s = input().strip()
lower_count = sum(1 for c in s if c.islower())
used = min(lower_count, k)
remaining = k - used
capital = used + sum(1 for c in s if c.isupper())
if remaining > 0:
    if remaining % 2 == 1:
        capital -= 1

print(capital)
发表于 2025-12-14 22:52:51 回复(0)
  • 时间复杂度:O(n)(遍历字符串一次)
  • 空间复杂度:O(1)(仅使用常数空间)
发表于 2025-11-25 15:33:53 回复(0)