elsemTim

v3.0

Aug 10th, 2020 (edited)
220
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Kotlin 1.53 KB | None | 0 0
  1. fun stringChallengeSecond(str: String): String {
  2.     return recurseSecond(str).toString()
  3. }
  4.  
  5. fun recurseSecond(inputString: String): Int {
  6.     var minimalLength = inputString.length
  7.     for (index in 0..inputString.length - 2) {
  8.         val firstChar = inputString[index]
  9.         val secondChar = inputString[index + 1]
  10.         if (firstChar != secondChar) {
  11.             val currentPair = firstChar.toString() + secondChar.toString()
  12.             val newString = inputString.replaceFirst(
  13.                 currentPair,
  14.                 checkNeedReplaceOrNot(firstChar, secondChar)
  15.             )
  16.             val newLength = recurseSecond(newString)
  17.             if (newLength == 1) {
  18.                 minimalLength = 1
  19.                 break
  20.             }
  21.             if (newLength < minimalLength) {
  22.                 minimalLength = newLength
  23.             }
  24.             println(currentPair)
  25.         }
  26.     }
  27.     return minimalLength
  28. }
  29.  
  30. fun checkNeedReplaceOrNot(firstChar: Char, secondChar: Char): String = if (firstChar == secondChar) {
  31.     firstChar.toString() + secondChar.toString()
  32. } else {
  33.     thirdChar(firstChar, secondChar)
  34. }
  35.  
  36. fun thirdChar(firstChar: Char, secondChar: Char): String {
  37.     val twoChar: String = firstChar.toString() + secondChar.toString()
  38.     if (!twoChar.contains("a")) {
  39.         return "a"
  40.     }
  41.     if (!twoChar.contains("b")) {
  42.         return "b"
  43.     }
  44.     if (!twoChar.contains("c")) {
  45.         return "c"
  46.     }
  47.     return twoChar
  48. }
  49.  
  50.  
  51. fun main() {
  52.     println(stringChallengeSecond("abcac"))
  53. }
Add Comment
Please, Sign In to add comment