文章标题
来源:互联网 发布:股票买卖模拟软件 编辑:程序博客网 时间:2024/06/04 01:33
leetCode 415 Add Strings
本来这道题很简单,但是由于个人菜鸟提交了好几次才有通过~
public class Solution { public String addStrings(String num1, String num2) { int len1 = num1.length(); int len2 = num2.length(); if (len1 == 0||num1.equals("0")) return num2; if (len2 == 0||num2.equals("0")) return num1; StringBuilder res=new StringBuilder(); StringBuilder residualString=new StringBuilder(); int i = 0, j = 0,carry = 0;//进位。 for (i = len1 - 1, j = len2 - 1; i >=0 && j >=0; i--, j--) { int a = num1.charAt(i) - '0'; int b = num2.charAt(j) - '0'; if (a + b +carry> 9) { residualString.append((a + b+ carry) % 10 ); carry = 1; } else { residualString.append(a + b + carry); carry=0; } } if (i <0) {//len1小 residualString.append(postDeal(num2.substring(0,j+1), carry)); } else{ residualString.append(postDeal(num1.substring(0,i+1), carry)); } for(i=residualString.length()-1;i>=0;i--){ res.append(residualString.charAt(i)); } return res.toString(); } String postDeal(String num,int carry){ String res=""; if(carry==0){ for(int i=num.length()-1;i>=0;i--){ res+=num.charAt(i); } return res; } else{ for(int i=num.length()-1;i>=0;i--){ int a=num.charAt(i)-'0'; if(a+carry<=9){ res+=(a+carry); // res+=num.substring(0,i); carry=0; // break; } else{ carry=1; res+='0'; } } if(carry==1) res+="1"; return res; } }}
代码写的并不简洁,甚至说是臃肿,贴在这里给自己个警钟,
1、最后的进位,
2、本来是想先把长的字符串的高位部分取出来,传到另一个参数做后 处理,结果没有考虑到两个字符串相同的情况;
3、在后处理时,想着简介一些,进位carry=0即可不用继续计算,然后没有翻转直接追加到了结果串上面去,最后翻转结果出错。
4、StringBuffer 有一个reverse()函数,直接翻转,不必自己写。
最后附上简洁的代码做个比较:(瞬间感觉世界都清净了)
public String addStrings(String num1, String num2) { int carry=0; StringBuffer sb=new StringBuffer(); for(int i=num1.length()-1,j=num2.length()-1;i>=0||j>=0||carry==1;i--,j--){ int a=0,b=0; if(i>=0) a=num1.charAt(i)-'0'; if(j>=0) b=num2.charAt(j)-'0'; sb.append((a+b+carry)%10); carry=(carry+a+b)/10; } return sb.reverse().toString(); }
0 0
- 文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题 文章标题 文章标题 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- 文章标题
- JavaScript Number 对象长度
- java用LinkedList模拟栈和队列
- (转)DIV入门之流式布局:float,clear <等>
- 简易 文章发布系统——前台界面
- 超炫酷的WPF实现Loading控件效果
- 文章标题
- nyoj1228矩形判断
- Git 【.gitignore】
- 操作系统IPC
- 简易 文章发布系统——后台管理系统
- Feescale K60开发笔记8: MQX中看门狗的使用
- android handler传递消息过程
- 费曼学习法-超级学习法
- 图片的懒加载