Add Binary
来源:互联网 发布:知乎一句话 编辑:程序博客网 时间:2024/05/17 06:31
Given two binary strings, return their sum (also a binary string).
For example,
a = "11"
b = "1"
Return "100"
.
wa了很多次,进位考虑的不仔细。
package leetcode;
public class AddBinary {
public String addBinary(Stringa, String b) {
if (a.length() == 0)return b;
if (b.length() == 0)return a;
String ans = "";
char[] charA =a.toCharArray();
char[] charB =b.toCharArray();
int i = charA.length - 1;
int j = charB.length - 1;
int count = 0;//进位
while (i>=0 &&j>=0){
String strTemp = addChar(charA[i],charB[j]);
if (count > 0){
if (strTemp.equals("10")){
count = 1;
ans = 1 +ans;
}else if (strTemp.equals("1")){
count = 1;
ans = 0 +ans;
}else{
count = 0;
ans = 1 +ans;
}
}else{
if (strTemp.equals("10")){
count = 1;
ans = 0 +ans;
}else if (strTemp.equals("1")){
count = 0;
ans = 1 +ans;
}else{
ans = 0 +ans;
}
}
i--;
j--;
//System.out.println(i+" "+j+" "+count+" "+ans+" "+strTemp);
}
if (count == 0){
if (i >= 0){
for (inttemp = i; temp>=0;temp--){
ans =charA[temp] + ans;
}
}
if (j >= 0){
for (inttemp = j; temp>=0;temp--){
ans =charB[temp] + ans;
}
}
}
if (count > 0){
int flag = 1;
if (i >= 0){
for (inttemp = i; temp>=0;temp--){
//System.out.println(charA[temp] + "");
//System.out.println(flag + " "+ charA[temp]);
String strTemp ="";
if (flag == 1){
strTemp = addChar(charA[temp],'1');
}else{
strTemp = addChar(charA[temp],'0');
}
if (strTemp.equals("10")){
flag = 1;
ans = 0 +ans;
}else if (strTemp.equals("1")){
flag = 0;
ans = 1 +ans;
}else{
flag = 0;
ans = 0 +ans;
}
}
}
if (j >= 0){
for (inttemp = j; temp>=0;temp--){
String strTemp ="";
if (flag == 1){
strTemp = addChar(charB[temp],'1');
}else{
strTemp = addChar(charB[temp],'0');
}
if (strTemp.equals("10")){
flag = 1;
ans = 0 +ans;
}else if (strTemp.equals("1")){
flag = 0;
ans = 1 +ans;
}else{
flag = 0;
ans = 0 +ans;
}
}
}
if (flag == 1)ans = 1 + ans;
count = 0;
}
//System.out.println(count + " " + ans);
if (count > 0) {
ans = 1 + ans;
}
return ans;
}
private String addChar(charc, char d) {
// TODO Auto-generated method stub
if (c +d == 98){
return"10";
}else if (c + d == 97){
return"1";
}else{
return"0";
}
}
public staticvoid main(String[] args) {
// TODO Auto-generated method stub
System.out.println(new AddBinary().addBinary("1111","1111")); //11110
System.out.println(new AddBinary().addBinary("1010","1011")); //10101
System.out.println(new AddBinary().addBinary("1","1")); //10
System.out.println(new AddBinary().addBinary("1","111")); //1000
System.out.println(new AddBinary().addBinary("1","11")); //100
System.out.println(new AddBinary().addBinary("100","110010")); //110110
System.out.println(new AddBinary().addBinary("10","101111")); //110001
System.out.println(new AddBinary().addBinary("101111","10")); //110001
//System.out.println(new AddBinary().addChar('1', '1'));
//System.out.println((char)a);
}
}
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Add Binary
- Pet类
- hihoCode 第49周 欧拉路 的C实现方法
- 设计模式——单例模式
- LeetCode 13:"Roman to Integer"
- [CodeForces445A]DZY Loves Chessboard[bfs]
- Add Binary
- Uncaught Error: Bootstrap's JavaScript requires jQuery
- POJ - 3692 Kindergarten 二分图 最大匹配
- 微分方程(1)---微分方程的数值解法
- Add Again(重复元素排序)
- 带外数据OOB与紧急模式URG
- JavaScript实现禁用键盘和鼠标的点击事件
- hdu 5234 Happy birthday(格子图上的01背包)
- ListView 的标准写法