DreamJudge-1012-字符移动
1.题目描述
Time Limit: 1000 ms
Memory Limit: 256 mb
输入一个字符串,将其中的数字字符移动到非数字字符之后,并保持数字字符和非数字字符输入时的顺序。例如:输入字符串“ab4f35gr#a6”,输出为“abfgr#a4356”。
输入输出格式
输入描述:
输入一行字符串,长度小于100。
输出描述:
输出结果。
输入输出样例
输入样例#:
ab4f35gr#a6
输出样例#:
abfgr#a4356
题目来源
贵州大学机试题
2. 题解
2.1 使用额外空间
思路
遍历原字符串,如果存在数字,则存入新字符串digit,反之存入结果字符串result
最后将digit放在result最后即可!
也可以不是数字的字符直接输出,是数字的存入一个新字符串再最后输出!
代码
#include<bits/stdc++.h>
using namespace std;
int main(){
string str;
cin >> str;
string result, digit;
for(char ch : str){
if(ch < '9' && ch > '0'){
digit = digit + ch;
} else{
result += ch;
}
}
cout << result + digit;
return 0;
}
2.2 原地修改
思路
将当前遇到的数字元素放到末尾,再删除当前的数字元素即可
代码
#include<iostream>
using namespace std;
int main()
{
string s;
cin >> s;
int j = 0;
for (auto i = s.begin(); j < s.size(); j++)
{
if (*i >= '0' && *i <= '9')
{
s.push_back(*i);
i = s.erase(i);
}
else
{
i++;
}
}
cout << s;
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了