立志重刷代码随想录60天冲冲冲!!——第八天

344. 反转字符串

没啥好说的,双指针秒

class Solution {
public:
    void reverseString(vector<char>& s) {
        for (int left = 0, right = s.size() - 1; left < right; left++, right--) {
            swap(s[left], s[right]);
        }
    }
};

541. 反转字符串 II

库函数reverse()需要使用迭代器

class Solution {
public:
    string reverseStr(string s, int k) {
        int n = s.size();
        for (int i = 0; i < s.size(); i += 2*k) {
            reverse(s.begin() + i, s.begin() + min(i + k, n));//使用迭代器!!
        }
        return s;
    }
};

54. 替换数字(第八期模拟笔试)

卡码网

双指针解法,尾插法

ACM需要加强

#include <iostream>
using namespace std;
int main() {
    string s;
    while (cin >> s) {
        // 统计数字个数
        int count = 0;
        for (int i = 0; i < s.size(); i++) {
            if (s[i] >= '0' && s[i] <= '9') {
                count++;
            }
        }
        
        int sOldLen = s.size() - 1;
        s.resize(s.size() + 5 * count);
        int sNewLen = s.size() - 1;
        
        while (sOldLen >= 0) {
            if (s[sOldLen] >= '0' && s[sOldLen] <= '9') {
                s[sNewLen--] = 'r';
                s[sNewLen--] = 'e';
                s[sNewLen--] = 'b';
                s[sNewLen--] = 'm';
                s[sNewLen--] = 'u';
                s[sNewLen--] = 'n';
            } else {
                s[sNewLen--] = s[sOldLen];
            }
            sOldLen--;
        }
    }
    cout << s << endl;
}

代码随想录更新 文章被收录于专栏

冲冲冲冲冲冲!

全部评论

相关推荐

评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务