【C++】两个字符串相加
2017-12-01 19:28
337 查看
题意:
思路:
代码如下:
本题,使得对于字符串的操作更加熟练。
对于再字符串的前、后添加字符的时候,可以将字符转换成字符串,再使用”+”号,添加上去:
Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Return "100".
思路:
思路:对于两个string a,b从后往前取值,若取值为空则赋值为0.设置进制符号flag; 若a[i]+b[i]+flag == 3 则 c[i]=1 flag =1;若a[i]+b[i]+flag == 2 则 c[i]=0 flag =1; 若a[i]+b[i]+flag == 1 则 c[i]=1 flag =0;若a[i]+b[i]+flag == 0 则 c[i]=0 flag =0;
代码如下:
string addBinary(string a, string b) { int lenA = a.size(); int lenB = b.size(); int lenC = lenA>lenB?lenA:lenB; int flag = 0; string c(lenC,'1'); //将a,b变成等长字符串,对短的字符串前面补'0' if(lenA>lenB){ string temp(lenC-lenB,'0'); b=temp+b; } else if(lenA<lenB){ string temp(lenC-lenA,'0'); a=temp+a; } // 判断是否需要进位 for(int i=lenC-1;i>=0;--i){ if(a[i]-'0'+b[i]-'0'+flag==3){ c[i]='1'; flag =1; } else if(a[i]-'0'+b[i]-'0'+flag==2){ c[i]='0'; flag =1; } else if(a[i]-'0'+b[i]-'0'+flag==1){ c[i]='1'; flag =0; } else if(a[i]-'0'+b[i]-'0'+flag==0){ c[i]='0'; flag =0; } } //如果溢出的话 if((a[0]-'0'+b[0]-'0'+flag)>=2){ c="1"+c; } return c; }
本题,使得对于字符串的操作更加熟练。
对于再字符串的前、后添加字符的时候,可以将字符转换成字符串,再使用”+”号,添加上去:
if((a[0]-'0'+b[0]-'0'+flag)>=2){ c="1"+c; }
相关文章推荐
- 面试题七 C/C++ 两个字符串由数字组成的相加,最大不超过32bit整形的系统函数--程序员面试题
- c\c++中比较两个字符串或string对象是否相等
- c++指针学习笔记--交换两个字符串数据收藏
- C++编程题-两个数字字符串的变换次数
- C++判断两个字符串是否互为旋转词
- C++实现两个字符串之间的Levenshtein Distance(编辑距离)
- c\c++中比较两个字符串或string对象是否相等
- 415. Add Strings (计算由两个字符串表示的数字相加之和)
- 用字符串模拟两个大数相加——java实现
- js 两个字符串相加减
- c\c++中比较两个字符串或string对象是否相等
- c++指针学习笔记--交换两个字符串数据
- 两个超大整数相加(c++)
- C/C++ 连接两个字符串
- 在C++中,如何传递String地址值交换两个字符串
- c++两个常用函数:1.二进制字符串2 hex(十六进制)。2. 栈变量字符串2堆变量
- leetcode_415(两个数字字符串相加,模拟大数相加)
- C++_USACO_从文件读出两个字符串_Your Ride Is Here
- 两个大数相加,使用字符串模拟相加过程
- Add Binary 两个二进制字符串相加