字符串加法
输入两个字符串a和b,字符串内容为二进制数字,求两个字符串相加的结果,加法计算方法以二进制方式计算,并返回对应的字符串结果。
示例如下:
/**
* @param a = "1101"
* @param b = "1100"
* @return "11001"
*/
public String add(String a, String b){
}
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//读入两个字符串
String s1 = sc.next();
String s2 = sc.next();
//将两个字符串反转
StringBuilder sb1 = new StringBuilder(s1);
StringBuilder sb2 = new StringBuilder(s2);
sb1.reverse();
sb2.reverse();
//求两个字符串的最大长度
int len = Math.max(sb1.length(), sb2.length());
StringBuilder sb = new StringBuilder();//结果字符串
boolean flag = false;//进位
for (int i = 0; i < len; i++) {
char c1 = i < sb1.length() ? sb1.charAt(i) : '0';
char c2 = i < sb2.length() ? sb2.charAt(i) : '0';
if (c1 == '0' && c2 == '0') {
if (flag) {
sb.append('1');
} else {
sb.append('0');
}
flag = false;
} else if (c1 == '0' && c2 == '1') {
if (flag) {
sb.append('0');
flag = true;
} else {
sb.append('1');
flag = false;
}
} else if (c1 == '1' && c2 == '0') {
if (flag) {
sb.append('0');
flag = true;
} else {
sb.append('1');
flag = false;
}
} else {
//c1 == '1' && c2 == '1'
if (flag) {
sb.append('1');
} else {
sb.append('0');
}
flag = true;
}
}
if (flag) {
sb.append('1');
}
//输出结果字符串
System.out.println(sb.reverse().toString());
}
}