import java.util.*
fun extractCurrencyAndAmount(input: String): Triple<String, String, Boolean> {
var amountStart = -1
var amountEnd = -1
var currencyStart = -1
var currencyEnd = -1
input.forEachIndexed { index, char ->
if (char.isDigit()) {
if (amountStart == -1) {
amountStart = index
}
amountEnd = index
} else if (!char.isWhitespace()) {
if (currencyStart == -1) {
currencyStart = index
}
currencyEnd = index
}
}
if (listOf(amountStart, amountEnd, currencyStart, currencyEnd).any { it == -1 }) {
throw IllegalArgumentException("Invalid input format")
}
val amount = input.substring(amountStart, amountEnd + 1)
val currency = input.substring(currencyStart, currencyEnd + 1)
val isCurrencyAtFront = currencyStart < amountStart
return Triple(currency, amount, isCurrencyAtFront)
}
fun main(args: Array<String>) {
println( extractCurrencyAndAmount("\$100") )
println( extractCurrencyAndAmount("100 \$") )
}
aW1wb3J0IGphdmEudXRpbC4qCgpmdW4gZXh0cmFjdEN1cnJlbmN5QW5kQW1vdW50KGlucHV0OiBTdHJpbmcpOiBUcmlwbGU8U3RyaW5nLCBTdHJpbmcsIEJvb2xlYW4+IHsKICAgIHZhciBhbW91bnRTdGFydCA9IC0xCiAgICB2YXIgYW1vdW50RW5kID0gLTEKICAgIHZhciBjdXJyZW5jeVN0YXJ0ID0gLTEKICAgIHZhciBjdXJyZW5jeUVuZCA9IC0xCgogICAgaW5wdXQuZm9yRWFjaEluZGV4ZWQgeyBpbmRleCwgY2hhciAtPgogICAgICAgIGlmIChjaGFyLmlzRGlnaXQoKSkgewogICAgICAgICAgICBpZiAoYW1vdW50U3RhcnQgPT0gLTEpIHsKICAgICAgICAgICAgICAgIGFtb3VudFN0YXJ0ID0gaW5kZXgKICAgICAgICAgICAgfQogICAgICAgICAgICBhbW91bnRFbmQgPSBpbmRleAogICAgICAgIH0gZWxzZSBpZiAoIWNoYXIuaXNXaGl0ZXNwYWNlKCkpIHsKICAgICAgICAgICAgaWYgKGN1cnJlbmN5U3RhcnQgPT0gLTEpIHsKICAgICAgICAgICAgICAgIGN1cnJlbmN5U3RhcnQgPSBpbmRleAogICAgICAgICAgICB9CiAgICAgICAgICAgIGN1cnJlbmN5RW5kID0gaW5kZXgKICAgICAgICB9CiAgICB9CgogICAgaWYgKGxpc3RPZihhbW91bnRTdGFydCwgYW1vdW50RW5kLCBjdXJyZW5jeVN0YXJ0LCBjdXJyZW5jeUVuZCkuYW55IHsgaXQgPT0gLTEgfSkgewogICAgdGhyb3cgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGlucHV0IGZvcm1hdCIpCn0KCiAgICB2YWwgYW1vdW50ID0gaW5wdXQuc3Vic3RyaW5nKGFtb3VudFN0YXJ0LCBhbW91bnRFbmQgKyAxKQogICAgdmFsIGN1cnJlbmN5ID0gaW5wdXQuc3Vic3RyaW5nKGN1cnJlbmN5U3RhcnQsIGN1cnJlbmN5RW5kICsgMSkKICAgIHZhbCBpc0N1cnJlbmN5QXRGcm9udCA9IGN1cnJlbmN5U3RhcnQgPCBhbW91bnRTdGFydAoKICAgIHJldHVybiBUcmlwbGUoY3VycmVuY3ksIGFtb3VudCwgaXNDdXJyZW5jeUF0RnJvbnQpCn0KIApmdW4gbWFpbihhcmdzOiBBcnJheTxTdHJpbmc+KSB7CiAgICBwcmludGxuKCBleHRyYWN0Q3VycmVuY3lBbmRBbW91bnQoIlwkMTAwIikgKQogICAgcHJpbnRsbiggZXh0cmFjdEN1cnJlbmN5QW5kQW1vdW50KCIxMDAgXCQiKSApCiAgICAKfQ==