⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.cpp

📁 给定字符串
💻 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 + -