首页 > 其他分享 >leetcode: 2129. 将标题首字母大写

leetcode: 2129. 将标题首字母大写

时间:2024-03-11 22:11:42浏览次数:24  
标签:title 2129 大写 单词 首字母 preIdx 小写 leetcode

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

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

请你返回 大写后 的 title 。

示例 1:

输入:title = “capiTalIze tHe titLe”

输出:“Capitalize The Titile”

解释: 由于所有单词的长度都至少为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,所以其他单词首字母大写,剩余字母小写。

 

首先我们先将所有单词转为小写,然后我们需要将长度大于2的单词的首字母大写,我们可以遍历字符串title,将字母转为小写加入结果,如果当前字符式空格‘ ’,则说明已经到一个单词的末尾,我们需要一个变量preIdx记录当前单词的首字母下标,判断是否需要将其变为大写(满足条件当前下表-preIdx>2),之后将preIdx赋值成下一个单词首字母的下标(preIdx = 当前下标 + 1),当遍历完字符串之后,我们还要在做一次变大写处理,因为最后一个单词还未处理。

实现代码如下:

 1 class Solution {
 2     public String capitalizeTitle(String title) {
 3         final StringBuilder stringBuilder = new StringBuilder();
 4         int preIdx = 0;
 5         for (int i = 0; i < title.length(); i++) {
 6             final char c = title.charAt(i);
 7             stringBuilder.append(Character.toLowerCase(c));
 8             if (c == ' ') {
 9                 if (i - preIdx > 2) {
10                     stringBuilder.setCharAt(preIdx, Character.toUpperCase(stringBuilder.charAt(preIdx)));
11                 }
12                 preIdx = i + 1;
13             }
14         }
15         if (title.length() - preIdx > 2) {
16             stringBuilder.setCharAt(preIdx, Character.toUpperCase(stringBuilder.charAt(preIdx)));
17         }
18         return stringBuilder.toString();
19     }
20 }

标签:title,2129,大写,单词,首字母,preIdx,小写,leetcode
From: https://www.cnblogs.com/gx-tom/p/18067212

相关文章

  • leetcode2397. 被列覆盖的最多行数 回溯法/枝剪
    第一次手搓一个回溯法,超时后采用枝剪勉强通过classSolution{intmax=0;intnumSelect;publicintmaximumRows(int[][]matrix,intnumSelect){Set<String>stateSet=newHashSet<>();dfs(matrix,newboolean[matrix[0].length],0,numSele......
  • 【刷题笔记】LeetCode-53 最大子数组和
    题目:给你一个整数数组nums,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例1:输入:nums=[-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1]的和最大,为 6。示例2:输入:nums=[1]输出:1示例3:输入:nums=[5,4,-1,7,8]输出:23......
  • LeetCode 7.整数反转
    题目:给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围[−231,231−1],就返回0。假设环境不允许存储64位整数(有符号或无符号)。示例1:输入:x=123输出:321示例2:输入:x=-123输出:-321示例3:输入:x=......
  • [LeetCode] 2129. Capitalize the Title
    Youaregivenastringtitleconsistingofoneormorewordsseparatedbyasinglespace,whereeachwordconsistsofEnglishletters.Capitalizethestringbychangingthecapitalizationofeachwordsuchthat:Ifthelengthofthewordis1or2letters......
  • leetcode 528/ LCR 071 按权重随机选择
    leetcode528/LCR071按权重随机选择528.按权重随机选择LCR071.按权重随机选择题目描述给定一个正整数数组w,其中w[i]代表下标i的权重(下标从0开始),请写一个函数pickIndex,它可以随机地获取下标i,选取下标i的概率与w[i]成正比。例如,对于w=[1,3],挑选下标0......
  • LeetCodeHot100 283. 移动零 11. 盛最多水的容器 15. 三数之和 42. 接雨水
    283.移动零https://leetcode.cn/problems/move-zeroes/description/?envType=study-plan-v2&envId=top-100-likedpublicvoidmoveZeroes(int[]nums){intr=0;for(inti=0;i<nums.length;i++){if(nums[i]!=0){......
  • LeetCode 128.最长连续序列 Python题解
    leetcode128题最长连续序列分享解题思路,使用哈希表算法......
  • 中考英语首字母快速突破001-2021上海崇明英语二模
    中考英语首字母快速突破001-2021上海崇明英语二模PDF格式公众号回复关键字:ZKSZM002原文​Whichismoreimportanttoourlives,theInternetorthewashingmachine?Manyofusmightanswer,"TheInternet!"TheInternethelpsusgatherinformation.It......
  • 【LeetCode】整数转罗马数字 C语言 | 此刻,已成艺术(bushi)
    Problem:12.整数转罗马数字目录思路解题方法复杂度Code思路暴力破解+转换解题方法由思路可知复杂度时间复杂度:$O(n)$空间复杂度:$O(1)$Codechar*intToRoman(intnum){char*s=(char*)malloc(sizeof(char)*4000),*p=s;while(num>0)......
  • 中考英语首字母快速突破001-2021上海宝山英语二模
    PDF格式公众号回复关键字:ZKSZM001原文Whatislaughter?Laughterisnaturalforpeople.Westarttolaughataboutfourmonthsofage.Westarttolaughevenbeforewestarttospeak!Laughterissocial.Itconnectsuswithotherpeople.Welaughmorewhenw......