class Solution {
fun validWordAbbreviation(word: String, abbr: String): Boolean {
var i = 0
var j = 0
while(j < abbr.length) {
var isAtLead = true
val k = j
while(abbr[j].isDigit()) {
if (isAtLead && (abbr[j] == '0')) {
return false
}
isAtLead = false
j++
if (j >= abbr.length) break
}
val number = abbr.substring(k, j).toIntOrNull()
if (number != null) {
i += number
}
if (i >= word.length || j >= abbr.length) {
if (j < abbr.length) return false
if (i < word.length) return false
break
}
if (word[i] != abbr[j]) {
return false
}
i++
j++
}
return i == word.length
}
}