- First solution: ( 3 + 1 ) / 3 * 9 = 12
- Second solution: ( 3 + 1 ) / ( 3 / 9 ) = 12
- First solution (Sorting strings):
private fun isAnagram_firstSolution(firstString: String, secondString: String): Boolean {
val s1 = firstString.lowercase(Locale.getDefault()).replace("\\s".toRegex(), "")
val s2 = secondString.lowercase(Locale.getDefault()).replace("\\s".toRegex(), "")
val firstArray = s1.toCharArray()
val secondArray = s2.toCharArray()
firstArray.sort()
secondArray.sort()
if (firstArray.size != secondArray.size) return false
for (i in firstArray.indices) {
if (firstArray[i] != secondArray[i])
return false
}
return true
}
- Second solution (Hash Maps):
private fun isAnagram_secondSolution(firstString: String, secondString: String): Boolean {
val firstMap = HashMap<Char, Int>()
val secondMap = HashMap<Char, Int>()
val s1 = firstString.lowercase(Locale.getDefault()).replace("\\s".toRegex(), "")
val s2 = secondString.lowercase(Locale.getDefault()).replace("\\s".toRegex(), "")
s1.forEach {
if (!firstMap.containsKey(it))
firstMap[it] = 1
else firstMap[it] = firstMap[it]!! + 1
}
s2.forEach {
if (!secondMap.containsKey(it))
secondMap[it] = 1
else secondMap[it] = secondMap[it]!! + 1
}
return (firstMap == secondMap)
}
A. recursive approach
private fun fibonacciRecursive(n: Int): Int {
if (n <= 1) return 1
return fibonacciRecursive(n - 1) + fibonacciRecursive(n - 2)
}
B. iterative approach
private fun fibonacciIterative(n: Int): Int {
val intArray = IntArray(n + 2)
intArray[0] = 1
intArray[1] = 1
for (i in 2 until n + 1) {
intArray[i] = intArray[i - 1] + intArray[i - 2]
}
return intArray[n]
}