LeetCode-2129:将标题首字母大写
Problem: 2129. 将标题首字母大写
思路
看到这题的第一想法是能不能用正则解题,先用常规方案写了一版,然后开始尝试使用正则解题。
解题方法
先使用
ToLower()
方法将所有字符转为小写,再使用正则表达式匹配ihdu大于等于 3 的单词
,最后使用匿名委托将匹配到的单词首字母转为大写。
Code - 正则表达式(匿名委托)
1
2
3
4
5
6
7
8
9
10
11
using System.Text.RegularExpressions;
public class Solution {
public string CapitalizeTitle(string title) {
return Regex.Replace(title.ToLower(), @"\b[a-z]{3,}", delegate (Match match)
{
string text = match.ToString();
return char.ToUpper(text[0]) + text[1..];
});
}
}
优化方案
使用
Lambda 表达式
替换匿名委托,将代码简化到一行。
Code - 正则表达式(Lambda 表达式)
1
2
3
4
5
6
7
using System.Text.RegularExpressions;
public class Solution {
public string CapitalizeTitle(string title) {
return Regex.Replace(title.ToLower(), @"\b[a-z]{3,}", (Match match) => char.ToUpper(match.Value[0]) + match.Value[1..]);
}
}
License:
CC BY 4.0