iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

破題

這個題目要在一個字串陣列中找到第一個迴文字串。迴文是指一個字串正向和反向讀都是一樣的,例如 madam

跟一流的人才幹大事,享受成功進步的高級樂趣!
內推機會來啦!能與優秀的程式設計師共事,是特別痛快的事,因為厲害的工程師大神會刺激你想要迎頭趕上的上進心,尤其是一起討論解決方案時,他們會觸發你有更好的解決思維能力,彼此共同成長並且一起享受解謎與破關般的樂趣。 你一定聽得懂我在說甚麼感覺,趕快把握機會,動動手指投遞履歷吧! 立即加入「面試讀書會」,和大家一起準備面試!

https://ithelp.ithome.com.tw/upload/images/20230915/20151958nT7kgUzy4M.png 內推機會 https://ithelp.ithome.com.tw/upload/images/20230902/20151958hbhGNE7BJ4.png 加入讀書會 (邀請碼:8227)

解題思路

遍歷每一個字串,並且對每一個字串的每一個字元進行比較,看看它是否與對應的反向字元相同。如果在任何時候,正向字元和反向字元不同,那麼該字串就不是迴文,接著繼續檢查下一個字串。如果找到了一個迴文,就立即回傳該字串。如果遍歷完所有的字串都沒有找到迴文,那麼就回傳空字串。

程式

class Solution {
    fun firstPalindrome(words: Array<String>): String {
        words.forEach { word ->
            var hasFound = true
            for (index in 0 until word.length / 2) {
                if (word[index] != word[word.length - 1 - index]) {
                    hasFound = false
                    break
                }
            }
            if (hasFound) return word
        }
        return ""
    }
}

複雜度分析

  • 時間複雜度:
    On,其中 n 是字串陣列的長度,n 是字串的平均長度。因為我們需要遍歷每一個字串,並且對每一個字串的每一個字符進行比較。

  • 空間複雜度:
    On,因為我們只需要常數級別的額外空間來存儲幾個變數(例如 hasFoundword),並不需要額外的空間來存儲 input 資料的 copy 或 transformation。所以空間複雜度是常數級別的。

pp 更多 LeetCode 解答在此,一起來學習!

內推機會來啦!

跟一流的人才幹大事,享受成功進步的高級樂趣!

https://ithelp.ithome.com.tw/upload/images/20230915/20151958nT7kgUzy4M.png 內推機會 https://ithelp.ithome.com.tw/upload/images/20230902/20151958hbhGNE7BJ4.png 加入讀書會 (邀請碼:8227)

上一篇
LeetCode 236. Lowest Common Ancestor of a Binary Tree
下一篇
LeetCode 146. LRU Cache
系列文
破解 Android 工程師面試白板題:30 道面試題目與解答30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言