leetcode add binary

 leet code add binary 题目:https://leetcode.com/problems/add-binary/

解题思路:

1.获取两个字符串长度的最大值

2.记录进位标记 int  carry

3.从后向前,以此取数,把与2取模的值插入字符串中,记录进行carry

4.遍历结束,判断最高进位是否是1,如果是1,在字符串中插入1,如果是0,不做处理。

主要用到了Java 中StringBuilder 中的insert 方法

public static void main(String[] args) {
		String a="11";
		String b="1";
		String s = addBinary(a, b);
		System.out.println(s);
	}

	/**
	 * 	二进制字符串进位
	 * @param a
	 * @param b
	 * @return
	 */
	public static  String addBinary(String a, String b) {
		int num=Math.max(a.length(),b.length());
		StringBuilder sb=new StringBuilder();
		int  carry=0;
		for(int i=0;i<num;i++){
			int p=0;
			int q=0;
			if(i<a.length()&& i<b.length()){
				p=a.charAt(a.length()-1-i)-'0';
				q=b.charAt(b.length()-1-i)-'0';
			}else if(i<a.length()&& i>=b.length()){
				p=a.charAt(a.length()-1-i)-'0';
				q=0;
			}else if(i>=a.length()&& i<b.length()){
				p=0;
				q=b.charAt(b.length()-1-i)-'0';
			}
			//进位
			int realNum=(p+q+carry)%2;
			sb.insert(0,realNum);
			carry=p+q+carry>1?1:0;
		}
		if(carry==1){
			sb.insert(0,1);
		}
		return sb.toString();
	}

猜你喜欢

转载自blog.csdn.net/u011243684/article/details/84621872