LeetCode 2. Add Two Numbers swift
//
// 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的更多相关文章
- LeetCode(2) || Add Two Numbers && Longest Substring Without Repeating Characters
LeetCode(2) || Add Two Numbers && Longest Substring Without Repeating Characters 题记 刷LeetCod ...
- LeetCode:1. Add Two Numbers
题目: LeetCode:1. Add Two Numbers 描述: Given an array of integers, return indices of the two numbers su ...
- [LeetCode] 445. Add Two Numbers II 两个数字相加之二
You are given two linked lists representing two non-negative numbers. The most significant digit com ...
- LeetCode 面试:Add Two Numbers
1 题目 You are given two linked lists representing two non-negative numbers. The digits are stored in ...
- LeetCode #002# Add Two Numbers(js描述)
索引 思路1:基本加法规则 思路2:移花接木法... 问题描述:https://leetcode.com/problems/add-two-numbers/ 思路1:基本加法规则 根据小学学的基本加法 ...
- [Leetcode Week15] Add Two Numbers
Add Two Numbers 题解 原创文章,拒绝转载 题目来源:https://leetcode.com/problems/add-two-numbers/description/ Descrip ...
- [LeetCode] 2. Add Two Numbers 两个数字相加 java语言实现 C++语言实现
[LeetCode] Add Two Numbers 两个数字相加 You are given two non-empty linked lists representing two non-ne ...
- [LeetCode] 2. Add Two Numbers 两个数字相加
You are given two non-empty linked lists representing two non-negative integers. The digits are stor ...
- LeetCode之Add Two Numbers
Add Two Numbers 方法一: 考虑到有进位的问题,首先想到的思路是: 先分位求总和得到 totalsum,然后再将totalsum按位拆分转成链表: ListNode* addTwoNum ...
随机推荐
- CoreData的使用
#import "ViewController.h" #import "Person.h" @interface ViewController () <U ...
- JQuery实现当鼠标停留在某区域3秒后执行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...
- mysql replace 替换函数
UPDATE ecm_goods SET description = replace(description,'原字符串', '替换为') WHERE 条件;
- Http协议与TCP协议简单理解
TCP协议对应于传输层,而HTTP协议对应于应用层,从本质上来说,二者没有可比性.Http协议是建立在TCP协议基础之上的,当浏览器需要从服务器获取网页数据的时候,会发出一次Http请求.Http会通 ...
- 区别和详解:js中call()和apply()的用法
1.关于call()和apply()的疑点: apply和call的区别在哪里 什么情况下用apply,什么情况下用call apply的其他巧妙用法(一般在什么情况下可以使用apply) 2.语法和 ...
- yii2 输出xml格式数据
作者:白狼 出处:http://www.manks.top/yii2_xml_response.html.html本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文 ...
- [PL/SQL]oracle数据库的导出导入
一.PL/SQL Developer工具一般对oracle的导入导出有以下4中方式: 1.Oracle导出导入方式 这种方式导出导入为.dmp的文件格式,.dmp文件是二进制的,可以跨平台,还能包含权 ...
- 每日Scrum(4)
今天是冲刺第4天,小组也没有做什么,大家都忙着找大二的学弟学妹来点评来支持我们的软件. 遇到的问题主要是如何劝说学弟学妹选择我们的软件然后继续往下做.
- Sql Server之旅——第十一站 简单说说sqlserver的执行计划
我们知道sql在底层的执行给我们上层人员开了一个窗口,那就是执行计划,有了执行计划之后,我们就清楚了那些烂sql是怎么执行的,这样 就可以方便的找到sql的缺陷和优化点. 一:执行计划生成过程 说到执 ...
- JSP在动态网页上输出 三角形和菱形
三角形输出: <% StringBuffer sb1 = new StringBuffer(); ; i <= ; i++){ ; j <= i; j++){ sb1.append( ...