文章

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