Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func check(_ str1: String, _ str2 : String) ->Int {
- guard str1.count > 0 else { return str2.count}
- guard str2.count > 0 else { return str1.count}
- var p1 = 0
- var p2 = 0
- let l1 = Array(str1)
- let l2 = Array(str2)
- while p1 < l1.count && p2 < l2.count{
- let char1 = l1[p1]
- let char2 = l2[p2]
- if char1 == char2{
- p1 += 1
- p2 += 1
- continue
- }
- if !isDigit(char1) || !isDigit(char2) { return char1 < char2 ? -1 : 1} //not number
- let n1 = getNumber(&p1, l1)
- let n2 = getNumber(&p2, l2)
- if n1 != n2 {
- return n1 - n2
- }
- p1 += 1
- p2 += 1
- }
- if l1.count == l2.count {return 0}
- return p1 == l1.count ? -1 : 1
- }
- func isDigit(_ char : Character) -> Bool{
- return char >= "0" && char <= "9"
- }
- func getNumber(_ p : inout Int, _ arr : [Character]) -> Int{
- var n = 0
- while p < arr.count && isDigit(arr[p]){
- n = n * 10 + Int(String(arr[p]))!
- p += 1
- }
- return n
- }
- let str1 = "a10b"
- let str2 = "a2b"
- print( check(str1, str2) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement