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;
}
标签:字符,digit,ch,数字,DreamJudge,result,字符串,1012
From: https://www.cnblogs.com/trmbh12/p/18241523