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;
}
posted @   DawnTraveler  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示