经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » 编程经验 » 查看文章
LeetCode 67. Add Binary
来源:cnblogs  作者:flowingfog  时间:2018/10/20 15:13:00  对本文有异议

分析

难度 易

来源

https://leetcode.com/problems/add-binary/description/

题目

Given two binary strings, return their sum (also a binary string).

The input strings are both non-empty and contains only characters 1 or 0.

Example 1:

  1. Input: a = "11", b = "1"
  1. Output: "100"

Example 2:

  1. Input: a = "1010", b = "1011"
  1. Output: "10101"

解答

  1. 1 package LeetCode;
  2. 2
  3. 3 public class L67_AddBinary {
  4. 4 private static String getSum(String a,String b){//a比b长
  5. 5 int len1=a.length();
  6. 6 int len2=b.length();
  7. 7 int[] res=new int[len1+1];//比a多一位,以备进位
  8. 8 StringBuilder str=new StringBuilder();
  9. 9 //StringBuilder res=new StringBuilder();
  10. 10 int flag=0;//表示进位
  11. 11 //int len=Math.min(len1,len2);//求和部分长度
  12. 12 for(int i=0;i<len2;i++){//求和部分长度
  13. 13 int aNum=a.charAt(len1-1-i)-'0';//从数字低位,即数组高位起逐位相加
  14. 14 int bNum=b.charAt(len2-1-i)-'0';
  15. 15 int remainder=(aNum+bNum+flag)%2;
  16. 16 res[len1-i]=remainder;
  17. 17 flag=(aNum+bNum+flag)/2;
  18. 18 }
  19. 19 for(int i=0;i<len1-len2;i++){//与b求和后多余部分
  20. 20 int aNum=a.charAt(len1-len2-1-i)-'0';//从数字低位,即数组高位起逐位相加
  21. 21 int remainder=(aNum+flag)%2;
  22. 22 res[len1-len2-i]=remainder;
  23. 23 flag=(aNum+flag)/2;
  24. 24 }
  25. 25 if (flag==1){
  26. 26 res[0]=1;
  27. 27 }
  28. 28 if (flag==1){
  29. 29 str.append("1");
  30. 30 for(int i=0;i<len1;i++){
  31. 31 str.append(res[i+1]);
  32. 32 }
  33. 33 }else{
  34. 34 for(int i=0;i<len1;i++){
  35. 35 str.append(res[i+1]);
  36. 36 }
  37. 37 }
  38. 38 return str.toString();
  39. 39 }
  40. 40 public String addBinary(String a, String b) {
  41. 41 int len1=a.length();
  42. 42 int len2=b.length();
  43. 43 if(len1>len2)
  44. 44 return getSum(a,b);
  45. 45 else
  46. 46 return getSum(b,a);
  47. 47 }
  48. 48
  49. 49 public static void main(String[] args){
  50. 50 String a1="11";
  51. 51 String b1="1";
  52. 52 String a2="100";
  53. 53 String b2="110010";
  54. 54 L67_AddBinary l67=new L67_AddBinary();
  55. 55 System.out.println(l67.addBinary(a2,b2));
  56. 56 }
  57. 57 }

 

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号