(C++字符串01) 反转字符串 反转字符串II 替换数字

344、反转字符串

class Solution {
public:
    void reverseString(vector<char>& s) {
        char tem;
        int length = s.size();
        for(int i = 0; i < length/2; i++) {
            tem = s[i];
            s[i] = s[length-i-1];
            s[length-i-1] = tem;
        }
    }
};

时间复杂度:O(n)

空间复杂度:O(1)

541、反转字符串 II

class Solution {
public:
    string reverseStr(string s, int k) {
        int length = s.size();   
        int i = 0,j = k - 1;
        for(; j < length; i += 2*k, j += 2*k) {
            swap(s, i, j);
        }
        if(i < length-1) {
            swap(s, i, length - 1);
        }
        return s;
    }
    void swap(string& s, int l, int r) {
        char tem;
        for(int i = l, j = r; i < j; i++, j--) {
            tem = s[i];
            s[i] = s[j];
            s[j] = tem;
        }
    }
};

时间复杂度:O(n)

空间复杂度:O(1)

54、替换数字

resize()函数:扩容vector的大小,不会改变容量

语法:

        void resize(size_t count);       //扩容为 count 大小;
        void resize(size_t count, const T& value);        //扩容为 count 大小,新元素初始化为 value;

双指针:

        分别指向新旧数组的最后一个元素,从后往前遍历,遇到字母复制,遇到数字填充number。从后往前遍历可以减少元素移动次数。

#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 left = s.size() - 1;
        s.resize(s.size() + count * 5);
        int right = s.size() - 1;
        
        while(right >= 0) {
            if(s[left] >= '0' && s[left] <= '9') {
                s[right--] = 'r';
                s[right--] = 'e';
                s[right--] = 'b';
                s[right--] = 'm';
                s[right--] = 'u';
                s[right--] = 'n';
            }else {
                s[right--] = s[left];
            }
            left--;
        }
        cout << s <<endl;
    }
}

时间复杂度:O(n)

空间复杂度:O(1)

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 00:48:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 00:48:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 00:48:03       58 阅读
  4. Python语言-面向对象

    2024-07-11 00:48:03       69 阅读

热门阅读

  1. 【Cookie 在 Spring Boot 中的实现】

    2024-07-11 00:48:03       21 阅读
  2. SQL的时间格式和文本灵活转换

    2024-07-11 00:48:03       28 阅读
  3. ubuntu22 设置开机直接登录桌面

    2024-07-11 00:48:03       23 阅读
  4. Sqlmap中文使用手册 - Options模块参数使用

    2024-07-11 00:48:03       17 阅读
  5. GIT基本概念以及简单使用方法

    2024-07-11 00:48:03       23 阅读
  6. SQL注入如何判断数据库类型

    2024-07-11 00:48:03       25 阅读
  7. 什么是引用

    2024-07-11 00:48:03       24 阅读
  8. 如何从Git仓库中删除大文件并解决推送错误方案

    2024-07-11 00:48:03       23 阅读
  9. Git删除了文件拉取时失败

    2024-07-11 00:48:03       22 阅读
  10. 学习测试练习题

    2024-07-11 00:48:03       24 阅读
  11. QT log日志

    2024-07-11 00:48:03       29 阅读
  12. Angular页面项目以HTTPS方式启动调试

    2024-07-11 00:48:03       22 阅读
  13. ArduPilot开源飞控之AP_VisualOdom

    2024-07-11 00:48:03       20 阅读
  14. 如何实现跨域

    2024-07-11 00:48:03       19 阅读