luogu-B3674 [语言月赛202210] 标题修改

luogu-B3674 [语言月赛202210] 标题修改

GESP三级练习,字符串练习(C++三级大纲中6号知识点,字符串),难度★★☆☆☆。

luogu-B3674 [语言月赛202210] 标题修改

题目要求

题目描述

某 E 写了一篇文章,标题为字符串 SS,由小写英文字符和空格组成。

某 E 恪守规范,因此,字符串 SS 是由若干个单词组成的,单词之间由一个空格隔开。

编辑人员要求将单词中的字母的大小写做调整。具体的,对每个单词,编辑人员要求将每个单词中的第奇数个字母改成大写,第偶数个字母改成小写。

关于单词下标的定义:这里我们以 11 为起始下标。也就是说,对一个长度为 nn 的单词,我们将字母从头到尾记作第一个、第二个、\cdots、第 nn 个。

举例:对单词 apple\texttt{apple}

  • 第一个字母为 a\texttt{a}
  • 第二个字母为 p\texttt{p}
  • 第三个字母为 p\texttt{p}
  • 第四个字母为 l\texttt{l}
  • 第五个字母为 e\texttt{e}

某 E 要赶 ddl,请你帮她完成这个任务。

输入格式

输入一行一个字符串 SS

输出格式

输出一行一个字符串,代表修改后的标题。

输入输出样例 #1

输入 #1

i like eat apple

输出 #1

I LiKe EaT ApPlE

说明/提示

对于 20%20\% 的数据,S=1|S|=1
对于另外 30%30\% 的数据,标题仅由一个单词组成;
对于 100%100\% 的数据,保证去除空格后的 SS 长度 106\le 10^6

如果想要使用 char 数组对整个 SS 进行存储,将数组大小调整至 2×1062 \times 10 ^ 6 以上即可。


题目分析

解题思路

  1. 读取一行字符串输入,存储到string变量中
  2. 遍历字符串,处理每个单词:
    • 使用循环遍历字符串的每个字符
    • 遇到非空格字符时,根据在单词中的位置决定大小写
    • 奇数位置转大写,偶数位置转小写
    • 遇到空格时重置单词内位置计数
  3. 字符大小写转换:
    • 使用toupper()函数将字符转为大写
    • 使用tolower()函数将字符转为小写
  4. 输出处理后的字符串

复杂度分析:

  • 时间复杂度为 O(n)O(n),其中n为输入字符串的长度
  • 空间复杂度为 O(1)O(1),只需要常数级额外空间存储计数器和修改后的字符串

{% include custom/custom-post-content-inner.html %}


示例代码

#include <iostream>
#include <string>

int main() {
    // 定义字符串变量存储输入
    std::string str;
    // 读取一整行输入,包含空格
    getline(std::cin, str);
    // idx用于记录每个单词中字母的位置(1开始)
    int idx = 1;
    // 遍历整个字符串
    for (int i = 0; i < str.length(); i++) {
        // 如果当前字符不是空格
        if (str[i] != ' ') {
            // 奇数位置字母转大写
            if (idx % 2 == 1) {
                str[i] = toupper(str[i]);
            } 
            // 偶数位置字母转小写
            else {
                str[i] = tolower(str[i]);
            }
            // 单词内字母位置加1
            idx++;
        } 
        // 遇到空格,重置单词内字母位置计数
        else {
            idx = 1;
        }
    }
    // 输出处理后的字符串
    std::cout << str;
    return 0;
}

{% include custom/custom-post-content-footer.md %}

所有代码已上传至Github:https://github.com/lihongzheshuai/yummy-code

luogu-”系列题目可在 洛谷题库 在线评测。

bcqm-”系列题目可在 编程启蒙题库 在线评测。

GESP/CSP 认证学习微信公众号
GESP/CSP 认证学习微信公众号
Last updated on