2129. 将标题首字母大写 【C++的字符串可修改。自增自减前置后置的使用】

14 阅读1分钟

2129. 将标题首字母大写

class Solution:
    def capitalizeTitle(self, title: str) -> str:
        ret = []
        for word in title.split():
            if len(word) <= 2:
                ret.append(word.lower())
            else:
                ret.append(word[0].upper() + word[1:].lower())

        return ' '.join(ret)

image.png

class Solution {
public:
    string capitalizeTitle(string title) {
        // C++ 的字符串 是可直接原地修改的, Python 不可以修改。  所以 C++ 的空间复杂度 可以 达到 O(1)
        int n = title.size();
        int left = 0, right = 0;    // 单词的左右边界
        while (right < n){
            while (right < n && title[right] != ' '){
                ++right;
            }

            if (right - left > 2){// 0 1 2 3  3 - 0   right = 3 为空格
                title[left++] = toupper(title[left]); // 首字符 大写
            }
            while (left < right){
                title[left++] = tolower(title[left]);
            }

            left =  ++right; // 当 right 在 left 前面 时, 要不断的后移

        }   
        return title;     
    }
};