HDU 2816 I Love You Too [Ad Hoc]

本文介绍了一段用于字符串处理的代码,该代码通过映射特定字符组合到字母表中,实现对输入字符串的转换,并进一步通过二次映射生成最终输出。详细解释了字符组合与字母之间的对应关系,以及如何利用此逻辑进行字符串的变换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Description

给你一串字符串 处理后输出

Code

#include <iostream>
using namespace std;
int main()
{
  string s;
  while (getline(cin, s))
  {
    string s1, s2, s3, s4;
    for (int i = 0; i < s.size(); i += 2)
    {
      char a = s[i];
      char b = s[i + 1];
      if (a == '2' && b == '1') s1 += 'A';
      if (a == '2' && b == '2') s1 += 'B';
      if (a == '2' && b == '3') s1 += 'C';
      if (a == '3' && b == '1') s1 += 'D';
      if (a == '3' && b == '2') s1 += 'E';
      if (a == '3' && b == '3') s1 += 'F';
      if (a == '4' && b == '1') s1 += 'G';
      if (a == '4' && b == '2') s1 += 'H';
      if (a == '4' && b == '3') s1 += 'I';
      if (a == '5' && b == '1') s1 += 'J';
      if (a == '5' && b == '2') s1 += 'K';
      if (a == '5' && b == '3') s1 += 'L';
      if (a == '6' && b == '1') s1 += 'M';
      if (a == '6' && b == '2') s1 += 'N';
      if (a == '6' && b == '3') s1 += 'O';
      if (a == '7' && b == '1') s1 += 'P';
      if (a == '7' && b == '2') s1 += 'Q';
      if (a == '7' && b == '3') s1 += 'R';
      if (a == '7' && b == '4') s1 += 'S';
      if (a == '8' && b == '1') s1 += 'T';
      if (a == '8' && b == '2') s1 += 'U';
      if (a == '8' && b == '3') s1 += 'V';
      if (a == '9' && b == '1') s1 += 'W';
      if (a == '9' && b == '2') s1 += 'X';
      if (a == '9' && b == '3') s1 += 'Y';
      if (a == '9' && b == '4') s1 += 'Z';
    }
    for (int i = 0; i < s1.size(); i++)
    {
      if (s1[i] == 'Q') s2 += 'A';
      if (s1[i] == 'W') s2 += 'B';
      if (s1[i] == 'E') s2 += 'C';
      if (s1[i] == 'R') s2 += 'D';
      if (s1[i] == 'T') s2 += 'E';
      if (s1[i] == 'Y') s2 += 'F';
      if (s1[i] == 'U') s2 += 'G';
      if (s1[i] == 'I') s2 += 'H';
      if (s1[i] == 'O') s2 += 'I';
      if (s1[i] == 'P') s2 += 'J';
      if (s1[i] == 'A') s2 += 'K';
      if (s1[i] == 'S') s2 += 'L';
      if (s1[i] == 'D') s2 += 'M';
      if (s1[i] == 'F') s2 += 'N';
      if (s1[i] == 'G') s2 += 'O';
      if (s1[i] == 'H') s2 += 'P';
      if (s1[i] == 'J') s2 += 'Q';
      if (s1[i] == 'K') s2 += 'R';
      if (s1[i] == 'L') s2 += 'S';
      if (s1[i] == 'Z') s2 += 'T';
      if (s1[i] == 'X') s2 += 'U';
      if (s1[i] == 'C') s2 += 'V';
      if (s1[i] == 'V') s2 += 'W';
      if (s1[i] == 'B') s2 += 'X';
      if (s1[i] == 'N') s2 += 'Y';
      if (s1[i] == 'M') s2 += 'Z';
    }
    s3 = s2.substr(0, (s2.size() + 1)/2);
    s4 = s2.substr((s2.size() + 1) / 2);
    string s5;
    for (int i = 0; i < s4.size(); i++)
      s5 = s5 + s3[i] + s4[i];
    if (s3.size() > s4.size()) s5 += s3[s3.size() - 1];
    string ans;
    ans.assign(s5.rbegin(), s5.rend());
    cout << ans << endl;
  }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值