题目:小Q最近遇到了一个难题:把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。你能帮帮小Q吗?
输入描述:
输入数据有多组,每组包含一个字符串s,且保证:1<=s.length<=1000.
输出描述:
对于每组数据,输出移位后的字符串。
输入例子:
AkleBiCeilD
输出例子:
kleieilABCD
题目比较简单,我的做法是按顺序把大小写字符串分开,最后两个string变量合并即可,还是用到了一点点空间(string变量)。
代码如下:
// UpperToLast.cpp : 定义控制台应用程序的入口点。
//
#include <bits/stdc++.h>
using namespace std;
int main()
{
string str1;
while (cin >> str1)
{
string str2 = "";
int i = 0,k = 0;
int length = str1.size();
while (i < length)
{
if ((((int)str1[k]) >= 64) && (((int)str1[k]) <= 91))
{
str2 += str1[k];
str1.erase(k,1);
}
else
k++;
i++;
}
str1 += str2;
for (string::iterator it = str1.begin(); it != str1.end(); ++it)
cout << *it;
cout << endl;
}
return 0;
}