​LeetCode解法汇总2129. 将标题首字母大写

news/2024/7/1 10:28:14

目录链接:

力扣编程题-解法汇总_分享+记录-CSDN博客

GitHub同步刷题项目:

https://github.com/September26/java-algorithms

原题链接:. - 力扣(LeetCode)


描述:

给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写 :

  • 如果单词的长度为 1 或者 2 ,所有字母变成小写。
  • 否则,将单词首字母大写,剩余字母变成小写。

请你返回 大写后 的 title 。

示例 1:

输入:title = "capiTalIze tHe titLe"
输出:"Capitalize The Title"
解释:
由于所有单词的长度都至少为 3 ,将每个单词首字母大写,剩余字母变为小写。

示例 2:

输入:title = "First leTTeR of EACH Word"
输出:"First Letter of Each Word"
解释:
单词 "of" 长度为 2 ,所以它保持完全小写。
其他单词长度都至少为 3 ,所以其他单词首字母大写,剩余字母小写。

示例 3:

输入:title = "i lOve leetcode"
输出:"i Love Leetcode"
解释:
单词 "i" 长度为 1 ,所以它保留小写。
其他单词长度都至少为 3 ,所以其他单词首字母大写,剩余字母小写。

提示:

  • 1 <= title.length <= 100
  • title 由单个空格隔开的单词组成,且不含有任何前导或后缀空格。
  • 每个单词由大写和小写英文字母组成,且都是 非空 的。

解题思路:

比较简单,先分割成单词,然后逐个单词转换,最后拼接回字符串。

代码:

class Solution {
public:
    std::string transformWord(std::string word)
    {
        if (word.size() <= 2)
        {
            std::transform(word.begin(), word.end(), word.begin(), ::tolower);
            return word;
        }
        string result;
        for (int i = 0; i < word.size(); i++)
        {
            if (i == 0)
            {
                result += toupper(word[i]);
            }
            else
            {
                result += tolower(word[i]);
            }
        }
        return result;
    }

    string capitalizeTitle(string title)
    {
        if (title.empty())
        {
            return "";
        }
        std::istringstream iss(title);
        std::vector<std::string> words;
        std::string word;
        while (iss >> word)
        {
            words.push_back(transformWord(word));
        }

        std::string transformedTitle = words.front();
        for (size_t i = 1; i < words.size(); ++i)
        {
            transformedTitle += " " + words[i];
        }
        return transformedTitle;
    }
};


http://lihuaxi.xjx100.cn/news/2085941.html

相关文章

《软件项目管理:从规划到实施的全面指南》

软件项目管理是当今信息技术领域中至关重要的一环。在一个数字化、信息化的时代&#xff0c;几乎所有行业都依赖于软件来支撑其业务流程和运营。然而&#xff0c;软件开发过程往往是复杂的&#xff0c;充满了挑战和风险。为了确保软件项目能够按时交付、在预算范围内完成&#…

UI自动化测试使用场景及脚本录制

经常有人会问&#xff0c;什么样的项目才适合进行UI自动化测试呢&#xff1f;UI自动化测试相当于模拟手工测试&#xff0c;通过程序去操作页面上的控件。而在实际测试过程中&#xff0c;经常会遇到无法找到控件&#xff0c;或者因控件定义变更而带来的维护成本等问题。 哪些场…

【笔记版】cgroup大摸底

云端&#xff1a; subsystem实际上就是cgroups的资源控制系统。 blkio&#xff1a; 这个subsystem可以为块设备设定输入/输出限制&#xff0c;比如物理驱动设备&#xff08;包括磁盘、固态硬盘、USB等&#xff09;。cpu&#xff1a; 这个subsystem使用调度程序控制task对CPU的…

算法-状数组与线段树-1264. 动态求连续区间和

题目 思路 线段树&树状数组 - AcWing算法学习笔记(14): 线段树 - 知乎 (zhihu.com) 代码 Python超时版 def calculate_subarray_sum(nums, a, b):return sum(nums[a-1:b])n, m map(int, input().split()) nums list(map(int, input().split()))for _ in range(m):op,…

IT外包的三大优势对企业的发展有何影响?

随着企业竞争的加剧和科技的不断发展&#xff0c;IT外包作为一种有效的业务策略&#xff0c;其三大优势——成本、专业和灵活性优势&#xff0c;已经成为企业提升竞争力和应对市场挑战的不可或缺的工具。本文将深入探讨这三大优势对企业发展的积极影响&#xff0c;为您解读IT外…

新概念英语第二册(78)

【New words and expressions】生词和短语&#xff08;12&#xff09; entitle v. 以……为名 calm v. 使镇定 nerve n. 神经 concentration n. 集中&#xff0c;专心 suffer …

剑指offer JZ23链表中环的入口节点 C++

1、题目描述 2、在VS2019上运行 #include <iostream>using namespace std;struct ListNode {int val;ListNode* next;ListNode(int x) : val(x), next(NULL) {} };class Solution { public:// 判断链表是否有环&#xff0c;返回相遇的地方ListNode* hasCycle(ListNode* …

SpringBoot中RestTemplate 发送http请求

SpringBoot中RestTemplate 发送http请求 引入fastjson <!--fastjson--> <dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>2.0.47</version> </dependency>创建配置文件 新建c…