剑指offer67题-No43-44.左旋转字符串、翻转单词序列

No43:简单的字符串处理。

    string LeftRotateString(string str, int n) {
        // write code here
        if(str.size() == 0) return {};        
        n = n % str.size();
        if(n == 0) return str;

        string res;

        for(int i = n; i < str.size(); i++){
            res = res + str[i];
        }
        for(int i = 0; i < n; i++){
            res = res + str[i];
        }
        return res;
    }

No44:翻转单词序列

字符串处理

c++中的string对象,没有内置的split函数,需要自己手写。
可以用istringstream配合getline实现。
题外话 ,关于左右值引用的介绍:一文读懂C++右值引用和std::move – 知乎

    vector<string> split(string strs, char s){
        istringstream iss(strs);
        string token;
        vector<string> res;
        while(getline(iss, token, s)){
            res.emplace_back(token);
        }
        return res;
    }
    string ReverseSentence(string str) {
        if(str.size() == 0) return {};
        string res; 
        vector<string> tmp;
        tmp = split(str, ' ');
        for(int i = tmp.size() -1; i >=0; i--){
            res = res + tmp[i] + " ";
        }
        res.pop_back();
        return res;
    }

另一种O1空间复杂度的算法,整体反转再局部反转。

    string ReverseSentence(string str) {
        if(str.size() == 0) return {};
        reverse(str.begin(), str.end());
        int start = 0;
        str += " "; //加一个" " 方便后续处理
        // .find: 找从pos开始(包括pos处字符)匹配str的位置下标 end = str.find(' ') 找到当前开始第一个' '下标
        for(int end = str.find(' '); end != string::npos; end = str.find(' ', start)){
            // 反转范围为[)
            reverse(str.begin() + start, str.begin() + end);
            start = end + 1;
        }

        str.pop_back(); // 最后要把添加上的空格删掉

        return str;
    }
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇