「程式碼隨想錄演算法訓練營」第八天 | 字串 part2

云雀AC了一整天發表於2024-07-11

151. 反轉字串中的單詞

題目連結:https://leetcode.cn/problems/reverse-words-in-a-string/
題目難度:中等
文章講解:https://programmercarl.com/0151.翻轉字串裡的單詞.html
影片講解: https://www.bilibili.com/video/BV1uT41177fX
題目狀態:修改後過

個人思路:
討了個巧,使用istringstream分割字串,在將分割出來的單詞依次存放到一個vector<string>裡面,最後翻轉vector<string>並透過ostringstream將結果輸出。

實現程式碼:

class Solution {
public:
    string reverseWords(string s) {
        istringstream iss(s);
        vector<string> words;
        string word;
        while(iss >> word) {
            words.push_back(word);
        }
        reverse(words.begin(), words.end());
        ostringstream oss;
        for(int i = 0; i < words.size(); ++i) {
            if(i != 0) oss << " ";
            oss << words[i];
        }
        return oss.str();
    }
};

55. 右旋字串(卡碼網

題目連結:https://kamacoder.com/problempage.php?pid=1065
文章講解:https://programmercarl.com/kama55.右旋字串.html
題目狀態:過

個人思路:
建立一個新string型別的res用來存放結果,首先先將字串後n個元素加入res,再將剩下的元素加入到res

實現程式碼:

#include <iostream>
#include <string>

using namespace std;
using std::string;

int main() {
    int n;
    string s;
    cin >> n >> s;
    string res;
    int sLen = s.size();
    for(int i = sLen - n; i < sLen; ++i) {
        res += s[i];
    }
    for(int i = 0; i < sLen - n; ++i) {
        res += s[i];
    }
    cout << res << endl;
    return 0;
}

相關文章