zoukankan      html  css  js  c++  java
  • LeetCode

    You are given two non-empty linked lists representing two non-negative integers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

    You may assume the two numbers do not contain any leading zero, except the number 0 itself.

    Input: (2 -> 4 -> 3) + (5 -> 6 -> 4)
    Output: 7 -> 0 -> 8

    445. Add Two Numbers II

    调整顺序即可

    /**
     * Definition for singly-linked list.
     * public class ListNode {
     *     int val;
     *     ListNode next;
     *     ListNode(int x) { val = x; }
     * }
     */
    class Solution {
        public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
            String s1 = toStr(l1);
            String s2 = toStr(l2);
            return toNode(addTowStr(s1, s2));
        }
        
        private String toStr(ListNode node) {
            StringBuilder sr = new StringBuilder();
            if (node == null)
                return sr.toString();
            while (node != null) {
                sr.append(node.val);
                node = node.next;
            }
            return sr.toString();
        }
        
        private ListNode toNode(String str) {
            if (str == null)
                return null;
            
            ListNode cur = new ListNode(str.charAt(0)-'0');
            ListNode head = cur;
            for (int i=1; i<str.length(); i++) {
                cur.next = new ListNode(str.charAt(i)-'0');
                cur = cur.next;
            }
            return head;
        }
        
        private String addTowStr(String s1, String s2) {
            if (s1 == null || s1.length() <= 0 || s1.equals("0"))
                return s2;
            if (s2 == null || s2.length() <= 0 || s2.equals("0"))
                return s1;
            
            if (s1.length() < s2.length()) {
                String t = s1;
                s1 = s2;
                s2 = t;
            }
            int minLen = s2.length();
            int maxLen = s1.length();
            int over = 0;
            StringBuilder ret = new StringBuilder();
            for (int i=0,j=0; i<=minLen-1 && j<=minLen; i++,j++) {
                int sum = (s1.charAt(j)-'0') + (s2.charAt(i)-'0') + over;
                if (sum < 10) {
                    ret.append(sum+"");
                    over = 0;
                }
                else {
                    ret.append((sum % 10)+"");
                    over = sum / 10;
                }
            }
            
            for (int i=minLen; i<maxLen; i++) {
                int sum = (s1.charAt(i)-'0') + over;
                if (sum < 10) {
                    ret.append(sum+"");
                    over = 0;
                }
                else {
                    over = sum / 10;
                    ret.append((sum % 10)+"");
                }
            }
            if (over > 0)
                ret.append(over);
            return ret.toString();
        }
        
        
    }
  • 相关阅读:
    PHP 命名空间
    使用 htaccess 重写 url,隐藏查询字符串
    HTML 长文本换行
    Mac OS X 上的Apache配置
    无法debug断点跟踪JDK源代码——missing line number attributes的解决方法
    根据多条件删除还能这样写
    wm_concat()函数
    spring 事务-使用@Transactional 注解(事务隔离级别)
    spring 中常用的两种事务配置方式以及事务的传播性、隔离级别
    oracle 中SQL 语句开发语法 SELECT INTO含义
  • 原文地址:https://www.cnblogs.com/wxisme/p/7464570.html
Copyright © 2011-2022 走看看