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 ...
随机推荐
- iOS 学习 - 14.本地联系人
苹果在iOS9的SDK中废除了AddressBookUI.framework的一些功能(是不是这个库都废除了,有待验证),具体和保存联系人相关的几个系统界面如下:联系人选择:AddressBookUI ...
- 自动化部署与统一安装升级 - 类ansible工具 udeploy0.3版本发布 (更新时间2014-12-24)
下载地址: unifyDeploy0.1版本 unifyDeploy0.2版本 unifyDeploy0.3版本 (更新时间2014-07-25) 自动化部署与统一安装升级,适用于多资 ...
- C#复习④
C#复习④ 2016年6月16日 12:37 Main Classes and Structs 类和结构体 1.Contents of Classes 字段,常量,方法,构造函数,析构函数: 特性,事 ...
- Java注解一谈
阅读目录 1.元注解 2.自定义注解 3.注解处理器 android注解框架解析 我们经常会在java代码里面看到:“@Override”,“@Target”等等样子的东西,这些是什么? 在java里 ...
- web会话管理
http协议是无状态的协议,也就是说服务器不知道这个http连接是那个浏览器发过来的. 要标识会话的唯一,有两种方法:1 Cookie 2 会话级cookie(开关浏览器算一次会话) 和 持久化的c ...
- php 升级到 5.3+ 后出现的一些错误,如 ereg(); ereg_replace(); 函数报错
在php5.3环境下运行,常常会出现 Deprecated: Function ereg() is deprecated in...和Deprecated: Function ereg_replace ...
- Python运算符,python入门到精通[五]
运算符用于执行程序代码运算,会针对一个以上操作数项目来进行运算.例如:2+3,其操作数是2和3,而运算符则是“+”.在计算器语言中运算符大致可以分为5种类型:算术运算符.连接运算符.关系运算符.赋值运 ...
- 纯css实现照片墙3D效果
每张照片都有美丽的故事.美好的回忆.家居中的照片墙则帮你展现出这些承载着家庭重要记忆的照片,除了用画框装饰照片挂在墙上外,照片墙还可以演变为手绘照片墙.也经常在网上看到一些关于照片墙的特效案例,决定自 ...
- php数组高级小结(一)
<?php /** * php5.4新增数组定义 */ $items1 = [ 'a','b','c' ]; $items2=[ 'name'=>'andy','age'=>52 ] ...
- Java基础语法总结2
三.运算符 Java基 本 的 运 算 符 按功能分有 下 面 几 类 : 1.算 术 运 算 符 (+,-,*,/,%,++,--) Java对 加 运 算 符 进 行 了 扩 展 ,使 它 能 够 ...