最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++中反轉(zhuǎn)字符串單詞字符順序的兩種方法

 更新時間:2026年03月16日 09:49:07   作者:likuolei  
本文介紹了C++中反轉(zhuǎn)字符串中每個單詞字符順序的兩種方法:方法一使用字符串流按單詞拆分并反轉(zhuǎn),方法二使用雙指針原地反轉(zhuǎn),兩種方法各有優(yōu)缺點,適合不同的場景,需要的朋友可以參考下

在 C++ 中,字符串處理是常見的面試與算法練習(xí)題。本題目標(biāo)是:反轉(zhuǎn)字符串中每個單詞的字符順序,但保持單詞順序不變。

示例:

輸入:  "Hello World"
輸出:  "olleH dlroW"

也就是說:

Hello → olleH
World → dlroW

下面介紹 兩種經(jīng)典實現(xiàn)方法

一、方法一:使用字符串流(stringstream)

利用 將字符串按單詞拆分,然后逐個反轉(zhuǎn)。

思路

  1. 使用 stringstream 按空格分割單詞
  2. 使用 reverse() 反轉(zhuǎn)單詞
  3. 拼接結(jié)果字符串

代碼實現(xiàn)

#include <iostream>
#include <sstream>
#include <algorithm>
using namespace std;
string reverseWords(string s) {
    stringstream ss(s);
    string word;
    string result;
    while (ss >> word) {
        reverse(word.begin(), word.end());
        result += word + " ";
    }
    result.pop_back();
    return result;
}
int main() {
    string str = "Hello World";
    cout << reverseWords(str) << endl;
    return 0;
}

輸出:

olleH dlroW

時間復(fù)雜度

O(n)

空間復(fù)雜度:

O(n)

優(yōu)點:

  • 代碼簡單
  • 可讀性好

缺點:

  • 使用額外空間

二、方法二:雙指針原地反轉(zhuǎn)

使用 雙指針掃描字符串,找到每個單詞的范圍并進行反轉(zhuǎn)。

思路

  1. 遍歷字符串
  2. 找到單詞起始位置
  3. 找到單詞結(jié)束位置
  4. 調(diào)用 reverse() 反轉(zhuǎn)

代碼實現(xiàn)

#include <iostream>
#include <algorithm>

using namespace std;

string reverseWords(string s) {

    int start = 0;

    for (int i = 0; i <= s.size(); i++) {

        if (i == s.size() || s[i] == ' ') {

            reverse(s.begin() + start, s.begin() + i);

            start = i + 1;
        }
    }

    return s;
}

int main() {

    string str = "Hello World";

    cout << reverseWords(str) << endl;

    return 0;
}

輸出:

olleH dlroW

時間復(fù)雜度

O(n)

空間復(fù)雜度:

O(1)

優(yōu)點:

  • 原地操作
  • 更節(jié)省內(nèi)存

缺點:

  • 實現(xiàn)稍復(fù)雜

三、兩種方法對比

方法思路空間復(fù)雜度適合場景
stringstream拆分單詞再反轉(zhuǎn)O(n)簡單實現(xiàn)
雙指針原地掃描O(1)面試優(yōu)化

四、進階問題(面試常問)

很多面試會繼續(xù)延伸:

1 反轉(zhuǎn)單詞順序

例如:

"Hello World"
→ "World Hello"

2 去除多余空格

例如:

"  hello   world "
→ "world hello"

3 整個字符串反轉(zhuǎn) + 單詞反轉(zhuǎn)

經(jīng)典算法:

1 先整體反轉(zhuǎn)
2 再逐個單詞反轉(zhuǎn)

該題在很多算法平臺都有類似題目,例如:

  • LeetCode

五、總結(jié)

反轉(zhuǎn)字符串中單詞字符順序的核心方法:

1?? 使用 字符串流分割單詞
2?? 使用 雙指針原地反轉(zhuǎn)

關(guān)鍵函數(shù):

reverse()

以上就是C++中反轉(zhuǎn)字符串單詞字符順序的兩種方法的詳細內(nèi)容,更多關(guān)于C++反轉(zhuǎn)字符串單詞字符順序的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解C語言之實現(xiàn)通訊錄

    詳解C語言之實現(xiàn)通訊錄

    這篇文章主要為大家詳細介紹了用C語言實現(xiàn)通訊錄,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 用pybind11封裝C++實現(xiàn)的函數(shù)庫的方法示例

    用pybind11封裝C++實現(xiàn)的函數(shù)庫的方法示例

    這篇文章主要介紹了用pybind11封裝C++實現(xiàn)的函數(shù)庫,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 詳解桶排序算法的思路及C++編程中的代碼實現(xiàn)

    詳解桶排序算法的思路及C++編程中的代碼實現(xiàn)

    桶排序即是先把每個桶中的元素進行排序然后遍歷桶依次列出元素的算法,桶排序在元素較少的情況下很高效,以下我們就來詳解桶排序算法的思路及C++編程中的代碼實現(xiàn):
    2016-07-07
  • C語言如何輸出中文

    C語言如何輸出中文

    這篇文章主要介紹了C語言如何輸出中文問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • C語言結(jié)構(gòu)體成員賦值的深拷貝與淺拷貝詳解

    C語言結(jié)構(gòu)體成員賦值的深拷貝與淺拷貝詳解

    C語言中的淺拷貝是指在拷貝過程中,對于指針型成員變量只拷貝指針本身,而不拷貝指針?biāo)赶虻哪繕?biāo),它按字節(jié)復(fù)制的。深拷貝除了拷貝其成員本身的值之外,還拷貝成員指向的動態(tài)內(nèi)存區(qū)域內(nèi)容。本文將通過示例和大家詳細說說C語言的深拷貝與淺拷貝,希望對你有所幫助
    2022-09-09
  • 樹存儲結(jié)構(gòu)的幾種表示方法

    樹存儲結(jié)構(gòu)的幾種表示方法

    今天小編就為大家分享一篇關(guān)于樹存儲結(jié)構(gòu)的幾種表示方法,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-03-03
  • C++課程設(shè)計之學(xué)生成績管理系統(tǒng)

    C++課程設(shè)計之學(xué)生成績管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++課程設(shè)計之學(xué)生成績管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 詳解VS2019使用scanf()函數(shù)報錯的解決方法

    詳解VS2019使用scanf()函數(shù)報錯的解決方法

    本文主要介紹了詳解VS2019使用scanf()函數(shù)報錯的解決方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • C++實現(xiàn)的歸并排序算法詳解

    C++實現(xiàn)的歸并排序算法詳解

    這篇文章主要介紹了C++實現(xiàn)的歸并排序算法,結(jié)合實例形式詳細分析了歸并排序算法的原理、實現(xiàn)步驟、操作技巧與使用方法,需要的朋友可以參考下
    2017-05-05
  • MinGW-w64 C/C++編譯器下載和安裝的方法步驟(入門教程)

    MinGW-w64 C/C++編譯器下載和安裝的方法步驟(入門教程)

    如果電腦沒有安裝MinGW-w64 C/C++編譯器,就無法運行g(shù)cc命令,本文主要介紹了MinGW-w64 C/C++編譯器下載和安裝的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

台中县| 新郑市| 固镇县| 青州市| 富川| 自治县| 大姚县| 宁都县| 吐鲁番市| 长泰县| 富宁县| 巫溪县| 长垣县| 柏乡县| 尖扎县| 色达县| 嘉鱼县| 旺苍县| 汉寿县| 合川市| 盐亭县| 丰宁| 岑溪市| 十堰市| 忻城县| 内江市| 太和县| 逊克县| 澄城县| 涪陵区| 清河县| 通许县| 阿合奇县| 益阳市| 尼勒克县| 茶陵县| 肃南| 常熟市| 泸州市| 双江| 阳谷县|