fork download
  1. import java.util.*
  2.  
  3. fun extractCurrencyAndAmount(input: String): Triple<String, String, Boolean> {
  4. var amountStart = -1
  5. var amountEnd = -1
  6. var currencyStart = -1
  7. var currencyEnd = -1
  8.  
  9. input.forEachIndexed { index, char ->
  10. if (char.isDigit()) {
  11. if (amountStart == -1) {
  12. amountStart = index
  13. }
  14. amountEnd = index
  15. } else if (!char.isWhitespace()) {
  16. if (currencyStart == -1) {
  17. currencyStart = index
  18. }
  19. currencyEnd = index
  20. }
  21. }
  22.  
  23. if (listOf(amountStart, amountEnd, currencyStart, currencyEnd).any { it == -1 }) {
  24. throw IllegalArgumentException("Invalid input format")
  25. }
  26.  
  27. val amount = input.substring(amountStart, amountEnd + 1)
  28. val currency = input.substring(currencyStart, currencyEnd + 1)
  29. val isCurrencyAtFront = currencyStart < amountStart
  30.  
  31. return Triple(currency, amount, isCurrencyAtFront)
  32. }
  33.  
  34. fun main(args: Array<String>) {
  35. println( extractCurrencyAndAmount("\$100") )
  36. println( extractCurrencyAndAmount("100 \$") )
  37.  
  38. }
Success #stdin #stdout 0.1s 41272KB
stdin
Standard input is empty
stdout
($, 100, true)
($, 100, false)