//
// main.swift
// leetcode02
//
// Created by GuoLa on 16/1/21.
// Copyright © 2016年 GuoLa. All rights reserved.
// import Foundation func input() -> String {
let keyboard = NSFileHandle.fileHandleWithStandardInput()
let inputData = keyboard.availableData
let strData = NSString(data: inputData, encoding: NSUTF8StringEncoding)!
return strData.stringByTrimmingCharactersInSet(NSCharacterSet.newlineCharacterSet())
} class ListNode{
var val:Int
var next:ListNode?
init(_ num: Int)
{
val=num
next=nil
} func desc()->String{ var ret:String = String(val)
var node = next
while node != nil {
ret = ret.stringByAppendingFormat("->%d", (node?.val)!)
node=node!.next
}
return ret
}
} public class SolutionAddTwoNumbers{
func addTwoNumbers(l1: ListNode?,l2: ListNode?) ->ListNode{
let ret:ListNode = ListNode(-)
var p1=l1
var p2=l2
var p:ListNode = ret if l1 == nil { ret.next = l2; return ret;}
if l2 == nil { ret.next = l1; return ret;} var p1count =
while p1 != nil {
p1=p1?.next
p1count++
}
var p2count =
while p2 != nil {
p2=p2?.next
p2count++
} if p2count > p1count {
p1=l2
p2=l1
}else
{
p1=l1
p2=l2
} while p1 != nil { if p2 == nil {
var sum=p1!.val
if p.next != nil {
sum+=(p.next!.val);
}
p.next=ListNode(sum%)
p=p.next! if sum/ > { p.next = ListNode() }
p1=p1?.next }
while p2 != nil {
var sum=p1!.val+p2!.val
if p.next != nil {
sum+=(p.next!.val);
} p.next=ListNode(sum%)
p=p.next! if sum/ > { p.next = ListNode() } p1=p1!.next
p2=p2!.next }
} return ret.next!;
}
} func ListNodeCreate(str: String) ->ListNode {
let str:[String] = str.componentsSeparatedByString("->")
var list:ListNode = ListNode(-)
let ret = list for s in str {
list.next = ListNode(Int(s)!)
list=list.next!
} return ret.next!
} var testCaseAddTowNumber = SolutionAddTwoNumbers() var l1:String = ""
repeat{ print("Enter ListNode1:(Input exit,Program end!)") //var l1 = "2->3->4"
l1 = input()
if l1 == "exit" {break} print("Enter ListNode2:")
//var l2 = "1->2->3"
var l2 = input() let nodel1 = ListNodeCreate(l1)
let nodel2 = ListNodeCreate(l2) print(nodel1.desc())
print(nodel2.desc()) var tow = SolutionAddTwoNumbers()
var ret = tow.addTwoNumbers(nodel1, l2: nodel2) print(ret.desc())
} while l1 != "exit"

测试输入

1->8

0

结果:1->8

0

7->3

结果 7->3

3
4->2
结果:7 2

6
4->2
结果:0 3

3->4->5
1->2->3
结果:4->6->8

9->4->5
1->2->3
结果:0->7->8

3->8->5
1->2->3
结果:4->0->9

3->4->7
1->2->3
结果:4->6->0->1

LeetCode 2. Add Two Numbers swift的更多相关文章

  1. LeetCode(2) || Add Two Numbers && Longest Substring Without Repeating Characters

    LeetCode(2) || Add Two Numbers && Longest Substring Without Repeating Characters 题记 刷LeetCod ...

  2. LeetCode:1. Add Two Numbers

    题目: LeetCode:1. Add Two Numbers 描述: Given an array of integers, return indices of the two numbers su ...

  3. [LeetCode] 445. Add Two Numbers II 两个数字相加之二

    You are given two linked lists representing two non-negative numbers. The most significant digit com ...

  4. LeetCode 面试:Add Two Numbers

    1 题目 You are given two linked lists representing two non-negative numbers. The digits are stored in ...

  5. LeetCode #002# Add Two Numbers(js描述)

    索引 思路1:基本加法规则 思路2:移花接木法... 问题描述:https://leetcode.com/problems/add-two-numbers/ 思路1:基本加法规则 根据小学学的基本加法 ...

  6. [Leetcode Week15] Add Two Numbers

    Add Two Numbers 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/add-two-numbers/description/ Descrip ...

  7. [LeetCode] 2. Add Two Numbers 两个数字相加 java语言实现 C++语言实现

    [LeetCode] Add Two Numbers 两个数字相加   You are given two non-empty linked lists representing two non-ne ...

  8. [LeetCode] 2. Add Two Numbers 两个数字相加

    You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...

  9. LeetCode之Add Two Numbers

    Add Two Numbers 方法一: 考虑到有进位的问题,首先想到的思路是: 先分位求总和得到 totalsum,然后再将totalsum按位拆分转成链表: ListNode* addTwoNum ...

随机推荐

  1. qq邮箱过滤器 + Foxmail(IMAP)

      一.qq邮箱过滤器       二.Foxmail+  IMAP,实现自定义目录下载     IMAP介绍,和POP比较 如何在Foxmail中配置IMAP

  2. get和post的区别与乱码问题解决

    ★ get和post的区别:     1.get请求通过url地址发送请求参数,可以在地址栏上直接显示     2.post请求通过请求体发送请求参数,不会再地址栏上显示     3.get在地址栏显 ...

  3. 服务器磁盘扩展卷时遭遇“There is not enough space available on the disk(s) to complete this operation.”错误

    在ESX VM的一台服务器由于磁盘空间告警,打算决定给E盘扩展空间,增加20G的空间,在操作过程遭遇了Expanding Disk Volume gives error "There is ...

  4. 使用dig查询dns解析

    原文地址:使用dig查询dns解析 作者:chenwenming 一般来说linux下查询域名解析有两种选择,nslookup或者dig,而在使用上我觉得dig更加方便顺手. 如果是在debian下的 ...

  5. java中equals和"=="的区别

    "=="号,它比较的是一个对象在内存中的地址值, 比如2个字符串对象String s1 = new String("str");String s2 = new ...

  6. iOS拍照上传后,在web端显示旋转 Swift+OC版解决方案

    问题描述: 手机头像上传,遇到一个怪现象,就是拍照上传时,手机端显示头像正常,但在web端查看会有一个左旋90度的问题. 并且照片竖怕才会有此问题,横拍不存在. 原因分析: 手机拍照时,用相机拍摄出来 ...

  7. ASP.NET Core 1.0 安装并发布到Centos 7.2 使用jexus 5.8.2

    安装运行环境 sudoyuminstall libunwind libicu 下载.net core https://www.microsoft.com/net/download 下载完后上传文件 安 ...

  8. linux rpm 安装和卸载

    [root@wang Packages]# mount /dev/cdrom /mnt 挂载 [root@wang Packages]# rpm -ivh zip-3.0-1.el6.x86_64.r ...

  9. 关于TreeView的选中事件

    在使用TreeView的选中事件时,发现,SelectAfter在第一次选中时触发,你再次点击时这个事件并不能引发它.所以找了找,发现有另两种解决办法. 最好的就是使用:NodeMouseClick, ...

  10. javascript日历控件——纯javascript版

    平时只有下班时间能code,闲来写了个纯javascript版.引用该calendar.js文件,然后给要设置成日历控件的input的id设置成calendar,该input就会变成日历控件. < ...