20240308-Day 26-点亮代码技能

卡码网54(代码随想录:替换数字)

C++:

注意:

这道题的关键是填充number的方法,如果从前向后填充,那么每次都需要将字符串后面的元素整体向后移动(时间复杂度O(n^2)),而如果从前向后填充则不需要。

cpp 复制代码
//卡码网54题:替换数字
#include <iostream>
#include <string>

using namespace std;

int main(void)
{
    string s;
    int count = 0;
    while(cin >> s)
    {
        int oldsize = s.size();
        for(int i=0; i < s.size(); i++)
        {
            if(s[i] >= '0' && s[i] <= '9')
                count++;
        }
        //扩充字符串大小
        s.resize(oldsize + 5*count);
        //从后向前填充数组
        int j = s.size() - 1;
        for(int i = oldsize-1; i >= 0; i--)
        {
            if(s[i] >= '0' && s[i] <= '9')
            {
                s[j] = 'r';
                s[j-1] = 'e';
                s[j-2] = 'b';
                s[j-3] = 'm';
                s[j-4] = 'u';
                s[j-5] = 'n';
                j -= 6;
            }
            else
            {
                s[j] = s[i];
                j--;
            }
        }
        cout << s << endl;
        cout << s.size() << endl;
    }
}

Python:

python 复制代码
class Solution:
    def replace_number(self, s:str)->str:
        res = list(s)
        for i in range(len(s)):
            if res[i] in ['1','2','3','4','5','6','7','8','9']:
                res[i] = 'number'
        return ''.join(res)

sol = Solution()
s = input()
result = sol.replace_number(s)
print(result)
相关推荐
wqfhenanxc1 小时前
Mixing C++ and Rust for Fun and Profit 阅读笔记
c++·笔记·rust
豆沙沙包?2 小时前
8.学习笔记-Maven进阶(P82-P89)
笔记·学习·maven
刘婉晴9 小时前
【信息安全工程师备考笔记】第三章 密码学基本理论
笔记·安全·密码学
晓数11 小时前
【硬核干货】JetBrains AI Assistant 干货笔记
人工智能·笔记·jetbrains·ai assistant
我的golang之路果然有问题11 小时前
速成GO访问sql,个人笔记
经验分享·笔记·后端·sql·golang·go·database
lwewan11 小时前
26考研——存储系统(3)
c语言·笔记·考研
搞机小能手12 小时前
六个能够白嫖学习资料的网站
笔记·学习·分类
nongcunqq12 小时前
爬虫练习 js 逆向
笔记·爬虫
汐汐咯13 小时前
终端运行java出现???
笔记
无敌小茶14 小时前
Linux学习笔记之环境变量
linux·笔记