반응형
class Solution {
fun myAtoi(str: String): Int {
if (str.isEmpty()) {
return 0
}
var i = 0
var negativeSign = false
val input = str.toCharArray()
while (i < input.size && input[i] == ' ') {
i++
}
if (i == input.size) {
return 0
} else if (input[i] == '+') {
i++
} else if (input[i] == '-') {
i++
negativeSign = true
}
var num = 0
while (i < input.size && input[i] <= '9' && input[i] >= '0') {
// current char
var tem = input[i] - '0'
tem = if (negativeSign) -tem else tem
// avoid invalid number like 038
if (num == 0 && tem == '0'.code) {
i++
} else if (num == Int.MIN_VALUE / 10 && tem <= -8 || num < Int.MIN_VALUE / 10) {
return Int.MIN_VALUE
} else if (num == Int.MAX_VALUE / 10 && tem >= 7 || num > Int.MAX_VALUE / 10) {
return Int.MAX_VALUE
} else {
num = num * 10 + tem
i++
}
}
return num
}
}
반응형
'Computer > Algorithm' 카테고리의 다른 글
[LeetCod] Letter Combinations of a Phone Number - kotlin (2) | 2025.03.06 |
---|---|
[LeetCod] 3Sum - kotlin (0) | 2025.03.05 |
[LeetCode] 350. Intersection of Two Arrays II - kotlin (0) | 2025.03.03 |
[LeetCode] 234. Palindrome Linked List - kotlin (0) | 2025.03.02 |
[LeetCode] 125. Valid Palindrome - kotlin (0) | 2025.03.02 |
댓글