📄 main.cpp
字号:
#include <cstdlib>
#include <iostream>
using namespace std;
void swapAscii(char * a, char * b)
{
char c = *a;
*a = *b;
*b = c;
}
int main(int argc, char *argv[])
{
char ss[] = {"1d8#ew73#@!2jk732de87325sf$#de@"};
char *a, *na, *nx, *x;
int moveCounter = 0;
a = na = ss;
x = nx = ss + strlen(ss) - 1;
cout << ss << endl;
for ( ; isalpha(*x) == 0 && isdigit(*x) == 0; x--) {}
while ( na < nx ) {
while ( na < nx ) {
if ( isalpha(*na) != 0 ) {
na++;
} else if ( isdigit(*na) != 0) {
na++;
} else {
break;
}
}
while ( na < nx ) {
if ( isalpha(*nx) != 0) {
break;
} else if ( isdigit(*nx) != 0 ) {
nx--;
} else {
nx--;
}
}
if ( na >= nx ) break;
swapAscii(na, nx);
moveCounter++;
na++, nx++;
}
a = ss;
x = ss + strlen(ss) - 1;
while ( a < na ) {
if ( isalpha(*na) ) {
for (; isalpha(*a); a++) {}
if ( a < na ) {
swapAscii(na, a);
moveCounter++;
}
}
na--;
}
while ( x > nx ) {
if ( isalpha(*nx) == 0 && isdigit(*nx) == 0 ) {
for (; isalpha(*x) == 0 && isdigit(*x) == 0; x--) {}
if ( x > nx ) {
swapAscii(nx, x);
moveCounter++;
}
}
nx++;
}
cout << ss << endl;
cout << "moveCounter:" << moveCounter << endl;
system("PAUSE");
return EXIT_SUCCESS;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -