elsemTim

Untitled

Aug 9th, 2020
1,298
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. fun stringChallenge(str: String): String {
  2.     val result = recurseChallenge(str)
  3.     println(result)
  4.     return result.length.toString()
  5. }
  6.  
  7. fun recurseChallenge(string: String): String {
  8.     val firstChar = string.first()
  9.     val isAllTheSame = string.all { it == firstChar }
  10.     if (isAllTheSame) {
  11.         return string
  12.     } else {
  13.         var position = 0
  14.         val stringIterator = string.iterator()
  15.         var prevValue = stringIterator.nextChar()
  16.         for (item in stringIterator) {
  17.             if (stringIterator.hasNext()) {
  18.                 if (item != prevValue) {
  19.                     break
  20.                 } else {
  21.                     position++
  22.                 }
  23.             }
  24.             prevValue = item
  25.         }
  26.         val oldSequence = string[position] + string[position + 1].toString()
  27.         val newString =
  28.             string.replaceFirst(
  29.                 oldSequence,
  30.                 checkNeedReplaceOrNot(string[position], string[position + 1]),
  31.                 true
  32.             )
  33.         println(newString)
  34.         recurseChallenge(newString)
  35.         return newString
  36.     }
  37. }
  38.  
  39. fun checkNeedReplaceOrNot(firstChar: Char, secondChar: Char): String = if (firstChar == secondChar) {
  40.     firstChar.toString() + secondChar.toString()
  41. } else {
  42.     thirdChar(firstChar, secondChar)
  43. }
  44.  
  45. fun thirdChar(firstChar: Char, secondChar: Char): String {
  46.     val twoChar: String = firstChar.toString() + secondChar.toString()
  47.     if (!twoChar.contains("a")) {
  48.         return "a"
  49.     }
  50.     if (!twoChar.contains("b")) {
  51.         return "b"
  52.     }
  53.     if (!twoChar.contains("c")) {
  54.         return "c"
  55.     }
  56.     return twoChar
  57. }
  58.  
  59. fun main(args: Array<String>) {
  60.     println(stringChallenge("abcabc"))
  61. //    println(stringChallenge(readLine()!!))
  62. }
RAW Paste Data