leetcode add binary
阿新 • • 發佈:2018-12-03
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(); }