forked from lexrus/LeetCode.swift
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path165.swift
75 lines (58 loc) · 2.38 KB
/
165.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
//
// CompareVersionNumbersTest.swift
// LeetCode
//
// Created by Lex Tang on 5/13/15.
// Copyright (c) 2015 Lex Tang. All rights reserved.
//
/*
Compare two version numbers version1 and version2.
If version1 > version2 return 1, if version1 < version2 return -1, otherwise return 0.
You may assume that the version strings are non-empty and contain only digits and the . character.
The . character does not represent a decimal point and is used to separate number sequences.
For instance, 2.5 is not "two and a half" or "half way to version three", it is the fifth second-level revision of the second first-level revision.
Here is an example of version numbers ordering:
0.1 < 1.1 < 1.2 < 13.37
*/
import Foundation
import XCTest
func compareVersionNumbers(lhs: String, rhs: String) -> Int {
let lhsA = lhs.componentsSeparatedByString(".")
let rhsA = rhs.componentsSeparatedByString(".")
for var i = 0; i < max(lhsA.count, rhsA.count); i++ {
let lInt: Int, rInt: Int
if i >= lhsA.count {
lInt = 0
} else {
lInt = atoi(lhsA[i])
}
if i >= rhsA.count {
rInt = 0
} else {
rInt = atoi(rhsA[i])
}
if lInt > rInt {
return 1
} else if lInt < rInt {
return -1
}
}
return 0
}
class CompareVersionNumbersTest: XCTestCase {
func testCompareVersionNumbers() {
XCTAssertEqual(compareVersionNumbers("0.1", rhs: "1.0"), -1, "")
XCTAssertEqual(compareVersionNumbers("0.1", rhs: "1.1"), -1, "")
XCTAssertEqual(compareVersionNumbers("1.0", rhs: "1.1"), -1, "")
XCTAssertEqual(compareVersionNumbers("1.1.1", rhs: "1.1.2"), -1, "")
XCTAssertEqual(compareVersionNumbers("1.1", rhs: "1.1.2"), -1, "")
XCTAssertEqual(compareVersionNumbers("13.23", rhs: "13.24"), -1, "")
XCTAssertEqual(compareVersionNumbers("13.23", rhs: "13.23.4"), -1, "")
XCTAssertEqual(compareVersionNumbers("13.23", rhs: "13.23.0"), 0, "")
XCTAssertEqual(compareVersionNumbers("13.23", rhs: "13.23.0.1"), -1, "")
XCTAssertEqual(compareVersionNumbers("0.0.1", rhs: "0.0.2"), -1, "")
XCTAssertEqual(compareVersionNumbers("0.0.2", rhs: "0.0.12"), -1, "")
XCTAssertEqual(compareVersionNumbers("1", rhs: "1"), 0, "")
XCTAssertEqual(compareVersionNumbers("2", rhs: "1.99"), 1, "")
}
}