KC Blog

[Android][Kotlin][CodingTest]刷題練習紀錄

3 min read
Others#Coding

其實這篇文章是想紀錄

之前面試被問到的題目的寫法

以kotlin為主

可能包含時間內沒寫出來

所以想雪恥之後再寫的

題目1

給定一個字串,內包含(,),{,},[,]等符號,如果符號有對稱到則返回true,反之false:

首先上我的解法:

主要是先取字串長度 中位數 並 轉 將字串換成array

      val strMedium = str.length / 2
      val strArray = str.toCharArray()

並將字串分成前後片段來看 類似二分法 分別比較對應的位置是否有對應的符號

    for (index in 0 until strMedium) {
           val prefixString = strArray[strMedium - index - 1].toString()
           val suffixString = strArray[strMedium + index].toString()

           when (prefixString) {
               "("->{ if (suffixString!=")")return false}
               "{"->{ if (suffixString!="}")return false}
               "["->{ if (suffixString!="]")return false}
           }
       }

沒有返回false 如果都正確 則執行最後一行true

題目2

給定一字串找出重複最多次的子字串,

如abcdabcd ->abcd 重複2次

abababab ->ab重複4次

這題我想很久

不過我想不到快速的解法

所以就想說用暴力法破解

這個思路就是

先遍歷整個字串

塞出可能的組合

再把重複最多次的那個子字串抓出來

找出題目要的index或重複次數還是字串 (我有點忘記實際被問的是哪個結果

不過這樣可能就要用到2~3個迴圈

這樣時間複雜度就要O(n^3)了

這樣感覺很爛

所以我後來上網查

找到有人用LPS演算法去解

但我還在研究

之後會補上

我研究過後的解說跟理解

先放個參考網址: https://www.geeksforgeeks.org/find-given-string-can-represented-substring-iterating-substring-n-times/