day33【算法题】替换数字
1.题目描述
题目链接:替换数字
- 替换数字(第八期模拟笔试)
时间限制:1.000S 空间限制:128MB
题目描述
给定一个字符串 s,它包含小写字母和数字字符,请编写一个函数,将字符串中的字母字符保持不变,而将每个数字字符替换为number。 例如,对于输入字符串 “a1b2c3”,函数应该将其转换为 “anumberbnumbercnumber”。
输入描述
输入一个字符串 s,s 仅包含小写字母和数字字符。
输出描述
打印一个新的字符串,其中每个数字字符都被替换为了number
输入示例
a1b2c3
输出示例
anumberbnumbercnumber
提示信息
数据范围:
1 <= s.length < 10000。
2.题解
2.1c++暴力
#include <iostream>
#include <string>
using namespace std;
int main(){
string s;
cin>>s;
int length=s.size();
for(int i=0;i<length;i++){
if(s[i]<'a'){
s.replace(i, 1, "number");
i+=5;
length = s.size();
}
}
cout<<s;
}
2.2C++双指针
#include <iostream>
#include <string>
using namespace std;
int main(){
string str;
cin>>str;
int old_index=str.size()-1;
int count=0;
for(int i=0;i<str.size();i++){
if(str[i]>='0' && str[i]<='9'){
count++;
}
}
str.resize(str.size()+count*5);
int new_index=str.size()-1;
while(old_index>=0){
if(str[old_index] >= '0' && str[old_index]<='9'){
str[new_index--]='r';
str[new_index--]='e';
str[new_index--]='b';
str[new_index--]='m';
str[new_index--]='u';
str[new_index--]='n';
}
else{
str[new_index]=str[old_index];
new_index--;
}
old_index--;
}
cout<<str<<endl;
}
代码执行过程解释:
- 输入处理:
cin >> str;
从标准输入读取一个字符串,并存储在变量str
中。
- 计数数字字符:
- 使用
for
循环遍历字符串str
,如果字符是数字(即str[i] >= '0' && str[i] <= '9'
),则递增count
计数器。
- 使用
- 扩展字符串长度:
str.resize(str.size() + count * 5);
根据count
计算需要扩展的长度,并预留足够的空间,每个数字字符都会被替换为字符串 “number”,长度增加 5。
- 替换操作:
- 使用
while
循环从字符串末尾开始向前处理。 - 如果当前字符是数字字符,则依次向前填充 “number”。
- 如果不是数字字符,则直接复制到新位置。
- 使用
- 输出结果:
cout << str << endl;
输出最终处理后的字符串。
示例运行:
假设输入为 "abc123xyz456def"
,则输出为 "abcrebmunumberxyzrebmunumberdef"
。
2.3Python
s=input()
ans=""
for i in s:
if ord("0")<=ord(i)<=ord("9"):
ans+="number"
else:
ans+=i
print(ans)
也是很暴力了。。
ok了,就到这里叭~~~
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
如果觉得作者写的不错,求给博主一个大大的点赞支持一下,你们的支持是我更新的最大动力!
拥有一颗感恩的心,珍惜身边的人和事,让生活更加美好。。