惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Vulnerabilities – Threatpost
U
Unit 42
F
Fortinet All Blogs
aimingoo的专栏
aimingoo的专栏
P
Proofpoint News Feed
F
Full Disclosure
月光博客
月光博客
Engineering at Meta
Engineering at Meta
博客园_首页
The Register - Security
The Register - Security
G
Google Developers Blog
The Cloudflare Blog
博客园 - Franky
K
Kaspersky official blog
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
C
Check Point Blog
NISL@THU
NISL@THU
AI
AI
D
DataBreaches.Net
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Stack Overflow Blog
Stack Overflow Blog
Project Zero
Project Zero
The GitHub Blog
The GitHub Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
量子位
Vercel News
Vercel News
T
Tor Project blog
P
Privacy International News Feed
D
Docker
I
Intezer
L
LangChain Blog
P
Proofpoint News Feed
Security Latest
Security Latest
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
Threatpost
博客园 - 聂微东
AWS News Blog
AWS News Blog
Martin Fowler
Martin Fowler
P
Privacy & Cybersecurity Law Blog
V
V2EX
Last Week in AI
Last Week in AI
C
Cybersecurity and Infrastructure Security Agency CISA
The Hacker News
The Hacker News
T
Tenable Blog
Blog — PlanetScale
Blog — PlanetScale
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
T
Tailwind CSS Blog

博客园 - toon的泥瓦匠

在oj中Python的循环输入问题解决 LeetCode 01 Two Sum swift Protocol in Objective-C 阿里云Center OS 6.2 Nginx 配置 SSL/TLS HTTPS配置 阿里云Centos 6.3 64位 安全加固版 升级 Php 中的 Curl 7.19 到 7.35 iOS APNS配置(转) GCD dispath_async dispath_sync 各种混合使用测试情况 Mac OS X Redmine Backlogs安装日志 设计模式建议学习顺序 调试iOS 已经发布代码 Crash 文件分析出出错对应代码 iOS RSA公钥加密数据 服务端接受PHP私钥解密 反过服务端公钥加密数据 iOS端私钥解密数据 xcode调试找出错误行 iOS 日期格式串 setDateFormat 显示格式代码 iOS5 UI 设计新手段 Storyboard UIEdgeInsets Non-SQL 完成公司核名 varchar(max) text sqlserver 2005 数据库的正则替换 sqlserver 2005 full-text 的创建和使用 - toon的泥瓦匠
LeetCode 2. Add Two Numbers swift
toon的泥瓦匠 · 2016-01-22 · via 博客园 - toon的泥瓦匠
//
//  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(-1)
        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 = 0
        while p1 != nil {
            p1=p1?.next
            p1count++
        }
        var p2count = 0
        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%10)
                p=p.next!
                
                if sum/10 > 0 { p.next = ListNode(1) }
                p1=p1?.next
                
            }
            while p2 != nil {
                var sum=p1!.val+p2!.val
                if p.next != nil {
                    sum+=(p.next!.val);
                }
                
                p.next=ListNode(sum%10)
                p=p.next!
                
                if sum/10 > 0 { p.next = ListNode(1) }
                
                p1=p1!.next
                p2=p2!.next
                
               }
        }
        
        return ret.next!;
    }
}

func ListNodeCreate(str: String) ->ListNode {
    let str:[String] = str.componentsSeparatedByString("->")
    var list:ListNode = ListNode(-1)
    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

posted @ 2016-01-22 00:20  toon的泥瓦匠  阅读(461)  评论()    收藏  举报