今天做了力扣题题目如下
给你一个字符串 title
,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写 :
- 如果单词的长度为
1
或者2
,所有字母变成小写。 - 否则,将单词首字母大写,剩余字母变成小写。
请你返回 大写后 的 title
。
代码
package org.example;标签:字符,String,title,大写,单词,3.20,sb From: https://www.cnblogs.com/wangzelin/p/18086020
import java.util.Scanner;
public class Solution {
public String capitalizeTitle(String title) {
StringBuilder sb = new StringBuilder(title);
int n = title.length();
int l = 0, r = 0; // 单词左右边界(左闭右开)
while (r < n) {
while (r < n && sb.charAt(r) != ' ') {
++r;
}
// 对于每个单词按要求处理
if (r - l > 2) {
sb.setCharAt(l, Character.toUpperCase(sb.charAt(l)));//将l位置的字母转换成大写,setCharAt(int index, char ch) 方法用于将指定索引处的字符设置为新的字符。Character.toUpperCase(...):将获取到的字符转换为大写形式(如果字符是小写的话)。如果字符已经是大写或者不是字母,该方法将返回原字符
++l;
}
while (l < r) {
sb.setCharAt(l, Character.toLowerCase(sb.charAt(l)));
++l;
}
l = r + 1;
++r;
}
return sb.toString();
}
public static void main(String[] args) {
Solution solution= new Solution();//实例化solution的对象
Scanner scanner = new Scanner(System.in);//System.in 负责读入控制台输入的文本
String tittle=scanner.nextLine();//scanner.nextLine() 是 Java 中 Scanner 类的一个方法,用于读取用户从控制台输入的一行文本。这个方法会读取从当前位置到下一个换行符(\n)之间的所有字符,包括任何空格、制表符或其他空白字符,并将它们作为一个完整的字符串返回。
String capitalizeTitle =solution.capitalizeTitle(tittle);
System.out.println(capitalizeTitle);
}
}