代码随想录day08

344.反转字符串

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

541.反转字符串II

    string reverseStr(string s, int k) {
        int length = s.size();
        int times = length/(2*k);
        int yushu = length%(2*k);
        for(int i = 0; i < times; i++){
            
            for(int left = i*2*k,right = (i*2+1)*k - 1;left < right; left++,right--){
                swap(s[left],s[right]);
            }
        }
        if(yushu < k){
            for(int left = times*2*k,right = length - 1;left < right; left++,right--){
                swap(s[left],s[right]);
            }
            
        }else{
            for(int left = times*2*k,right = (times*2+1)*k - 1;left < right; left++,right--){
                swap(s[left],s[right]);
            }
        }
        return s;
    }

54.替换数字

//简单写法

    string s;
    cin >> s;
    string t;
    for(int i = 0; i < s.size(); i++){
        if((s[i] - '0') < 10){
            t += "number";
        }else{
            t += s[i];
        }
    }
    cout << t;

//只用一个数组写法,需注意从后往前的数组写法

#include<iostream>
using namespace std;
int main(){

    string s;
    while(cin >> s){
        int length = s.size();
        int count = 0;
        for(int i = 0; i < length; i++){
            if((s[i] - '0') < 10){
                count++;
            }
        }
        int length_new = length + count * 5;
        s.resize(length_new);
        int left = length - 1;
        int right = length_new - 1;
        while(left >= 0){
            if((s[left] - '0') < 10){
                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;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值