hdu 2816(I Love You Too)(STL)

本文详细介绍了如何通过映射字符集并实现数据的高效编码与解码过程,同时展示了如何利用特定算法进行字符串的逆向处理,确保数据一致性与准确性。重点在于提供一种通用的方法来解决字符映射与数据反转的问题,适用于多种编程场景。
#include<stdio.h>
#include<map>
#include<string>
#include<iostream>
using namespace std;
map<string,char>ms;
map<char,char>mc;
string s1,s2,si;
int main()
{
    int t;
    ms["21"]='A';
    ms["22"]='B';
    ms["23"]='C';
    ms["31"]='D';
    ms["32"]='E';
    ms["33"]='F';
    ms["41"]='G';
    ms["42"]='H';
    ms["43"]='I';
    ms["51"]='J';
    ms["52"]='K';
    ms["53"]='L';
    ms["61"]='M';
    ms["62"]='N';
    ms["63"]='O';
    ms["71"]='P';
    ms["72"]='Q';
    ms["73"]='R';
    ms["74"]='S';
    ms["81"]='T';
    ms["82"]='U';
    ms["83"]='V';
    ms["91"]='W';
    ms["92"]='X';
    ms["93"]='Y';
    ms["94"]='Z';

    mc['Q']='A';
    mc['W']='B';
    mc['E']='C';
    mc['R']='D';
    mc['T']='E';
    mc['Y']='F';
    mc['U']='G';
    mc['I']='H';
    mc['O']='I';
    mc['P']='J';
    mc['A']='K';
    mc['S']='L';
    mc['D']='M';
    mc['F']='N';
    mc['G']='O';
    mc['H']='P';
    mc['J']='Q';
    mc['K']='R';
    mc['L']='S';
    mc['Z']='T';
    mc['X']='U';
    mc['C']='V';
    mc['V']='W';
    mc['B']='X';
    mc['N']='Y';
    mc['M']='Z';
    s1.clear();
    while(cin>>s1)
    {
        s2.clear();
        for(int i=0;i<s1.size();i=i+2)
        {
            si.clear();
            for(int j=i;j<i+2;j++)
            si+=s1[j];
            s2+=ms[si];
        }
        //cout<<s2<<endl;
        s1.clear();
        for(int i=0;i<s2.size();i++)
        s1+=mc[s2[i]];
        string s3,s4;//保存分的两段
        t=(s1.size()+1)/2;
        for(int i=0;i<t;i++)
        s3+=s1[i];
        for(int i=t;i<s1.size();i++)
        s4+=s1[i];
        //cout<<s3<<endl<<s4<<endl;
        s1.clear();
        for(int i=0;i<s3.size();i++)
        {
            s1+=s3[i];
            if(s4[i]!='\0')s1+=s4[i];
        }
        //cout<<s1<<endl;
        for(int i=s1.size()-1;i>=0;i--)
        cout<<s1[i];
        cout<<endl;
        s1.clear();
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/XDJjy/archive/2013/04/25/3042677.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值