把一个字符串的大写字母放到字符串的后面,各个字符的相对位置不变,且不能申请额外的空间。
实现代码如下:
#include<iostream>
#include<string>
using namespace std;
string StrSort(string &s)
{
int slen = s.length();
for (int i = slen - 2; i != -1; --i)
{
if (isupper(s[i]))
{
for (int j = i; j != slen - 1 && islower(s[j + 1]); ++j)
{
s[j] ^= s[j + 1];
s[j + 1] ^= s[j];
s[j] ^= s[j + 1];
}
}
}
return s;
}
int main()
{
string str;
while (cin >> str)
{
cout << StrSort(str) << endl;
}
system("pause");
return 0;
}
实验结果如下,已通过牛客网测试,