LeetCode 557.反轉(zhuǎn)字符串中的單詞III

題目

給定一個字符串,你需要反轉(zhuǎn)字符串中每個單詞的字符順序,同時仍保留空格和單詞的初始順序。

示例

輸入: "Let's take LeetCode contest"
輸出: "s'teL ekat edoCteeL tsetnoc" 

注意:在字符串中,每個單詞由單個空格分隔,并且字符串中不會有任何額外的空格。

題目鏈接

題目分析

首先來看如何反轉(zhuǎn)一個字符串:使用雙指針法,前指針指向第一個元素,后指針指向最后一個元素,然后交換這兩個指針的元素,循環(huán)。

while (left < right){
    swap(s[left], s[right]);
    left++;
    right--;
}

這道題目只是在這個基礎(chǔ)上增加了一點判斷條件,同樣用雙指針法,每當(dāng)遍歷到空格或\0的時候,說明一個單詞結(jié)束了,反轉(zhuǎn)這個單詞(使用上文的方法)。

但要注意,由于需要借助最后一位的\0,所以要多遍歷一位。

for (int i = 0; i < len + 1; i++){
    if (s[i] == ' ' || s[i] == '\0'){
        right = i - 1;
        while (left < right){
            swap(s[left], s[right]);
            left++;
            right--;
        }
        left = i + 1;
    }
}

題目解答

char * reverseWords(char * s){
    int len = strlen(s);
    int left = 0;
    int right;
    for (int i = 0; i < len + 1; i++){
        if (s[i] == ' ' || s[i] == '\0'){
            right = i - 1;
            while (left < right){
                char temp = s[right];
                s[right] = s[left];
                s[left] = temp;
                left++;
                right--;
            }
            left = i + 1;
        }
    }
    return s;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容