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

C語言題解字符串變形算法示例

 更新時間:2023年08月10日 08:42:12   作者:吳尼瑪  
這篇文章主要為大家介紹了C語言題解字符串變形的方法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

題引

對于一個長度為 n 字符串,我們需要對它做一些變形。

首先這個字符串中包含著一些空格,就像"Hello World"一樣,然后我們要做的是把這個字符串中由空格隔開的單詞反序,同時反轉每個字符的大小寫。

比如"Hello World"變形后就變成了"wORLD hELLO"。需要考慮字符串結尾是空格的情況。

數據范圍: 1≤n≤10^6106 , 字符串中包括大寫英文字母、小寫英文字母、空格。

進階:空間復雜度 O(n) , 時間復雜度 O(n)

題目保證給定的字符串均由大小寫字母和空格構成。

示例1.

輸入:
"This is a sample",16

返回值:
"SAMPLE A IS tHIS"

示例2.

輸入:
"This is a sample ",17

返回值:
" SAMPLE A IS tHIS"

示例3.

輸入:
"iOS",3

返回值:
"Ios"

思路

解答代碼的思路:先按空格分割字符串,將分割后的字符串存入棧中,根據棧的特點,后面的單詞會先彈出,最后將出棧的字符串反轉大小寫后拼接成返回的字符串中。

寫法會更簡單的思路:是先遍歷整個字符串來反轉大小寫。然后分割字符串,入棧,出棧,拼接字符串。

還有雙逆轉的思路:也是先遍歷整個字符串來反轉大小寫。然后先逆轉一次整個字符串,再以空格為界逆轉每個單詞的字符串。

解答代碼

#include <string>
#include <stack>
class Solution {
public:
    /**
     * @param s string字符串 
     * @param n int整型 
     * @return string字符串
     */
    string trans(string s, int n) {
        // write code here
        string res;
        res.reserve(n);
        stack<string> strs;
        string tmp;
        for (int i = 0; i < n; i++) {
            char c = s[i];
            if (c != ' ') {
                tmp.push_back(c);
            } else {
                // 將空格隔開的字符串入棧
                strs.push(tmp);
                tmp.clear();
            }
            // 字符串結尾沒有空格,要將最后一個找到的字符串入棧
            if (i == n-1 && !tmp.empty()) {
                strs.push(tmp);
            }
        }
        // 排除結尾空格的特殊情況
        if (s[n - 1] == ' ') {
            res.push_back(' ');
        }
        while (!strs.empty()) {
            // 將找到的字符串一個個出棧
            auto cur = strs.top();
            strs.pop();
            // 轉換大小寫
            for (int i = 0; i < cur.size(); i++) {
                char c = cur[i];
                // 65~90為26個大寫英文字母,97~122號為26個小寫英文字母,兩者相差32
                char new_char = c >= 'a' && c <= 'z' ? c - 32 : c + 32;
                cur[i] = new_char;
            }
            res.append(cur);
            if (strs.size() > 0) {
                res.push_back(' ');
            }
        }
        return res;
    }
};

以上就是C語言題解字符串變形方法示例的詳細內容,更多關于C語言題解字符串變形的資料請關注腳本之家其它相關文章!

相關文章

  • 使用Libmicrohttpd搭建內嵌(本地)服務器的方法

    使用Libmicrohttpd搭建內嵌(本地)服務器的方法

    下面小編就為大家?guī)硪黄褂肔ibmicrohttpd搭建內嵌(本地)服務器的方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • C++獲取硬件參數的示例詳解

    C++獲取硬件參數的示例詳解

    這篇文章主要為大家詳細介紹了如何使用C++獲取硬件參數,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-11-11
  • opencv攝像頭捕獲識別顏色

    opencv攝像頭捕獲識別顏色

    這篇文章主要介紹了opencv攝像頭捕獲識別顏色,用opencv通過攝像頭捕獲識別顏色,紅色藍色等,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • 詳解C++異常處理三個重要組成部分

    詳解C++異常處理三個重要組成部分

    這篇文章主要為大家介紹了C++異常處理的三個重要組成部分示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-04-04
  • C++實現字符串元音字母反轉的兩種方法

    C++實現字符串元音字母反轉的兩種方法

    在處理字符串問題時,我們經常需要對其中的字符進行操作,例如反轉、替換等,本文將詳細討論如何在C++中實現僅反轉字符串中的所有元音字母,并返回結果字符串,需要的朋友可以參考下
    2024-07-07
  • 統(tǒng)計C語言二叉樹中葉子結點個數

    統(tǒng)計C語言二叉樹中葉子結點個數

    這篇文章主要介紹的是統(tǒng)計C語言二叉樹中葉子結點個數,文章以C語言二叉樹中葉子結點為基礎分享一個簡單小栗子講解,具有一定的知識參考價值,需要的小伙伴可以參考一下
    2022-02-02
  • C語言實現選擇排序、直接插入排序、冒泡排序的示例

    C語言實現選擇排序、直接插入排序、冒泡排序的示例

    這篇文章主要介紹了C++實現選擇排序、直接插入排序、冒泡排序的代碼示例,相當簡潔直觀,也是算法和數據結構學習中的基礎,需要的朋友可以參考下
    2016-02-02
  • C指針原理教程之編譯原理-小型計算器實現

    C指針原理教程之編譯原理-小型計算器實現

    本文給大家分享的是如何使用C語言編寫一個小型計算器的實例代碼,有需要的小伙伴可以參考下
    2019-02-02
  • C語言算法練習之佩奇借書

    C語言算法練習之佩奇借書

    這篇文章主要該大家分享C語言佩奇借書的練習,文章主要通過描述佩奇借書的問題然后確定程序框架將結果運算出來,下面來看詳細內容吧,需要的朋友可以參考一下
    2022-03-03
  • C++淺拷貝與深拷貝及引用計數分析

    C++淺拷貝與深拷貝及引用計數分析

    這篇文章主要介紹了C++淺拷貝與深拷貝及引用計數分析的相關資料,需要的朋友可以參考下
    2017-06-06

最新評論

宁武县| 和硕县| 越西县| 梁河县| 特克斯县| 宜良县| 富平县| 许昌市| 蕲春县| 靖州| 德保县| 宜昌市| 京山县| 二连浩特市| 武宁县| 定西市| 福贡县| 吉林市| 犍为县| 抚松县| 金溪县| 策勒县| 始兴县| 越西县| 聂拉木县| 沂源县| 峨山| 咸丰县| 裕民县| 青海省| 天水市| 通辽市| 普兰县| 山阳县| 湛江市| 邹城市| 广南县| 女性| 宁化县| 左权县| 福州市|