问题标题: 酷町堂:2853 字符串加密

0
0
已解决
陈曦
陈曦
资深天翼
资深天翼

题目传送门

#include<iostream>

#include<cstdio>

#include<string>

#include<cmath>

using namespace std;

string s;

string a_A(string a){

    for(int i=0;i<a.size();i++){

        if(int(a[i])%2==0){

            if(a[i]>='a'&& a[i]<='z'){

                a[i]-=32;

            }

        }

    }

    return a;

}

string ab_ba(string a){

    for(int i=0;i<(a.size()-1)/2;){

        for(int j=a.size()-1;j>(a.size()-1)/2;){

            if((a[i]>='0'&&a[i]<='9') && (a[j]>='0'&&a[j]<='9')){

                swap(a[i],a[j]);

                i++;

                j--;

            }

            else if((a[i]>='0'&&a[i]<='9') && !(a[j]>='0'&&a[j]<='9')){

                j--;

            }

            else{

                i++;

            }

        }

    }

    return a;

}

int main(){

    getline(cin,s);

    s=a_A(s); // √

    s=ab_ba(s);

    cout<<s;

    return 0;

}

 

 

10分


0
已采纳
张帆
张帆
中级天翼
中级天翼

第二个变化函数是什么鬼东东?

我的方法:

1.定义一个整形数组(pos),有字符串长度个元素,以及一个变量cn,表示此字符串中有多少个数字字符,赋值为0

2.遍历字符串a,若当前a[i]为数字字符,就

pos[++cnt]=a[i]-'0';

3.再次遍历字符串a,若当前a为数字字符,则

a[i]=pos[cnt--]+'0';

这样第二个操作函数就OK了。

我要回答