DreamJudge-1240-首字母大写

1.题目介绍

Time Limit: 1000 ms
Memory Limit: 256 mb

对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。 在字符串中,单词之间通过空白符分隔,空白符包括:空格(' ')、制表符('\t')、回车符('\r')、换行符('\n')。

输入输出格式

输入描述:

输入一行:待处理的字符串(长度小于100)。

输出描述:

可能有多组测试数据,对于每组数据,
输出一行:转换后的字符串。

输入输出样例

输入样例#:

if so, you already have a google account. you can sign in on the right.

输出样例#:

If So, You Already Have A Google Account. You Can Sign In On The Right.

题目来源

北京大学机考题

2.题解

2.1 字符串函数

思路

使用isspace判断空白符,使用标记判断当前是否是一个新单词(每经过一个空白符,默认后面的为一个新开始的单词)
然后使用toupper大写化首字母即可!

代码

#include <iostream>
#include <string>
#include <cctype>

using namespace std;

void capitalizeWords(string& s) {
    int n = s.length();
    bool inWord = false; // 标记是否在单词中
    
    for (int i = 0; i < n; ++i) {
        // 如果当前字符是空白符,说明单词结束
        if (isspace(s[i])) {
            inWord = false;
        } else {
            // 如果当前字符不是空白符,且不在单词中,说明新单词开始
            if (!inWord) {
                inWord = true;
                // 如果单词的首字母不是大写字母,则将其转换为大写字母
                if (islower(s[i])) {
                    s[i] = toupper(s[i]);
                }
            }
        }
    }
}

int main() {
    string input;
    getline(cin, input);
    
    capitalizeWords(input);
    cout << input << endl;
    
    return 0;
}

posted @   DawnTraveler  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示