题目

题目地址:PAT 乙级 1048

思路

这道题坑的地方在于:即使B的长度小于A,仍然要对B补齐,也就是说最终结果的长度取决于A和B中长度更长的那一项;即只要A、B长度不一致,就要对短的一个进行补齐操作

    在补齐过程中解决了之前一直忽略的一个问题——对于string类型的字符串按字符逐个进行赋值,这个过程中就出现了问题:

先来看一段代码

 #include <iostream>
#include <string>
using namespace std; int main() {
string str;
for (int i = ; i < ; i++)
str[i] = '';
cout << str.size() << endl;
cout << str << endl; return ;
}

那么这段代码的结果会是怎样的?我们来验证一下

0

显然并不是预想的结果,原因就在于string不能像char一样实现a[ i ] = b[ j ]这样的操作

对于string类型的字符串实现逐个字符赋值,需要使用 “+=” 这个算符实现,代码如下:

 #include <iostream>
#include <string>
using namespace std; int main() {
string str;
for (int i = ; i < ; i++)
str += ''; //赋值时一定注意格式是str,而不是str[i]
cout << str.size() << endl;
cout << str << endl; return ;
}

结果如下:


显然,这个结果才是我们希望看到的;

代码

 #include <iostream>
#include <string>
using namespace std; int main() {
string a, b;
string zero;
for (int i = ; i < ; i++)
zero += '';
string result;
cin >> a >> b;
int len_a = a.size();
int len_b = b.size();
if (len_a > len_b) {
string tmp = b;
string tmp1;
int len = len_a - len_b;
tmp1 = zero.substr(, len);
b = tmp1 + tmp;
}
else if (len_a < len_b) {
string tmp = a;
string tmp1;
int len = len_b - len_a;
tmp1 = zero.substr(, len);
a = tmp1 + tmp;
}
bool flag = true;
for (int i = a.size() - ; i >= ; i--) {
if (flag) {
int tmp = ((int(b[i]) - ) + (int(a[i]) - )) % ;
if (tmp == )
result.push_back('J');
else if (tmp == )
result.push_back('Q');
else if (tmp == )
result.push_back('K');
else
result.push_back(char(tmp + ));
flag = false;
}
else {
int tmp = ((int(b[i]) - ) - (int(a[i]) - ));
if (tmp < )
tmp += ;
result.push_back(char(tmp + ));
flag = true;
}
}
for (int i = result.size() - ; i >= ; i--)
cout << result[i];
cout << endl; return ;
}

最新文章

  1. 道路翻新 (Revamping Trails, USACO 2009 Feb)
  2. CodeForces - 405C
  3. IIS5与IIS6 应用程序生命周期和页生命周期
  4. poj 3295 Tautology
  5. Lisp使用Lambda语法
  6. Apple Tree(需要预处理的树状数组)
  7. 网卡及MAC和PHY的区别
  8. js 的其它运算符和优先级
  9. JS中prototype属性-JS原型模式
  10. 【学习opencv第七篇】图像的阈值化
  11. Asp.Net Web Api 与 Andriod 接口对接开发
  12. (一)Python之猜数游戏
  13. jenkins插件安装与升级[三]
  14. 蓝桥杯 求最大值 dp
  15. 从集合的无序性看待关系型数据库中的&quot;序&quot;
  16. UML建工工具
  17. java获得上下周及本周日期
  18. android ------ RecyclerView 模仿淘宝购物车
  19. resin4.0.25 安装配置 及结合eclipse开发
  20. 使用IdentityServer4实现一个简单的Oauth2客户端模式授权

热门文章

  1. crm项目整理概要
  2. IDEA导入HttpServlet包
  3. 单例设计模式singleton
  4. Codeforces 1111D(退背包、排列组合)
  5. 洛谷P4238【模板】多项式求逆
  6. 【手撸一个ORM】第九步、orm默认配置类 MyDbConfiguration,一次配置,简化实例化流程
  7. 3.Freshman阶段学习内容的确定
  8. Spring Aspect 获取请求参数
  9. 遍历List集合的方式
  10. css3响应式图片