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;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了