日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[Swift]LeetCode1147. 段式回文 | Longest Chunked Palindrome Decomposition

發布時間:2023/12/2 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [Swift]LeetCode1147. 段式回文 | Longest Chunked Palindrome Decomposition 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
?微信公眾號:山青詠芝(shanqingyongzhi)
?博客園地址:山青詠芝(https://www.cnblogs.com/strengthen/)
?GitHub地址:https://github.com/strengthen/LeetCode
?原文地址:https://www.cnblogs.com/strengthen/p/11297775.html?
?如果鏈接不是山青詠芝的博客園地址,則可能是爬取作者的文章。
?原文已修改更新!強烈建議點擊原文地址閱讀!支持作者!支持原創!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

Return the largest possible?k?such that there exists?a_1, a_2, ..., a_k?such that:

  • Each?a_i?is a non-empty string;
  • Their concatenation?a_1 + a_2 + ... + a_k?is equal to?text;
  • For all?1 <= i <= k,??a_i = a_{k+1 - i}.?

Example 1:

Input: text = "ghiabcdefhelloadamhelloabcdefghi" Output: 7 Explanation: We can split the string on "(ghi)(abcdef)(hello)(adam)(hello)(abcdef)(ghi)".

Example 2:

Input: text = "merchant" Output: 1 Explanation: We can split the string on "(merchant)".

Example 3:

Input: text = "antaprezatepzapreanta" Output: 11 Explanation: We can split the string on "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)(a)(nt)(a)".

Example 4:

Input: text = "aaa" Output: 3 Explanation: We can split the string on "(a)(a)(a)".?

Constraints:

  • text?consists only of lowercase English characters.
  • 1 <= text.length <= 1000

段式回文 其實與 一般回文 類似,只不過是最小的單位是 一段字符?而不是 單個字母。

舉個例子,對于一般回文 "abcba" 是回文,而 "volvo" 不是,但如果我們把?"volvo" 分為 "vo"、"l"、"vo" 三段,則可以認為 “(vo)(l)(vo)” 是段式回文(分為 3 段)。?

給你一個字符串?text,在確保它滿足段式回文的前提下,請你返回?段?的?最大數量?k。

如果段的最大數量為?k,那么存在滿足以下條件的?a_1, a_2, ..., a_k:

  • 每個?a_i?都是一個非空字符串;
  • 將這些字符串首位相連的結果?a_1 + a_2 + ... + a_k?和原始字符串?text?相同;
  • 對于所有1 <= i <= k,都有?a_i = a_{k+1 - i}。?

示例 1:

輸入:text = "ghiabcdefhelloadamhelloabcdefghi" 輸出:7 解釋:我們可以把字符串拆分成 "(ghi)(abcdef)(hello)(adam)(hello)(abcdef)(ghi)"。

示例 2:

輸入:text = "merchant" 輸出:1 解釋:我們可以把字符串拆分成 "(merchant)"。

示例 3:

輸入:text = "antaprezatepzapreanta" 輸出:11 解釋:我們可以把字符串拆分成 "(a)(nt)(a)(pre)(za)(tpe)(za)(pre)(a)(nt)(a)"。

示例 4:

輸入:text = "aaa" 輸出:3 解釋:我們可以把字符串拆分成 "(a)(a)(a)"。?

提示:

  • text?僅由小寫英文字符組成。
  • 1 <= text.length <= 1000

8ms 1 class Solution { 2 func longestDecomposition(_ text: String) -> Int { 3 var result = 0 4 var chars = Array(text) 5 var n = text.count 6 var l = "" 7 var r = "" 8 for i in 0..<n { 9 l += String(chars[i]) 10 r = String(chars[n-i-1]) + r 11 if l == r { 12 result += 1 13 l = "" 14 r = "" 15 } 16 } 17 return result 18 } 19 }

Runtime:?12 ms

Memory Usage:?20.6 MB 1 class Solution { 2 func longestDecomposition(_ text: String) -> Int { 3 let n:Int = text.count 4 for i in 0..<(n/2) 5 { 6 if text.subString(0, i + 1) == (text.subString(n - 1 - i, n)) 7 { 8 return 2 + longestDecomposition(text.subString(i + 1, n - 1 - i)) 9 } 10 } 11 return (n == 0) ? 0 : 1 12 } 13 } 14 extension String { 15 // 截取字符串:指定索引和字符數 16 // - star: 開始索引 17 // - end: 結束索引 18 func subString(_ start:Int,_ end:Int) -> String { 19 let start = self.index(self.startIndex, offsetBy: start) 20 let end = self.index(self.startIndex, offsetBy: end) 21 return String(self[start..<end]) 22 } 23 }
12ms? 1 class Solution { 2 func longestDecomposition(_ text: String) -> Int { 3 let chars = Array(text) 4 var l = chars.startIndex 5 var r = chars.endIndex - 1 6 let mid = (l + r + 1) / 2 7 var ans = 0 8 9 while l < r { 10 let range = 0..<mid-l 11 var next = range.upperBound 12 for i in range where chars[l...l+i] == chars[r-i...r] { 13 next = i + 1 14 ans += 2 15 if l + i + 1 == r - i { 16 return ans 17 }else{ 18 break 19 } 20 } 21 l += next 22 r -= next 23 } 24 return ans + 1 25 } 26 }

16ms

1 class Solution { 2 func longestDecomposition(_ text: String) -> Int { 3 let s = Array(text) 4 var result = 0 5 6 let end = s.endIndex - 1 7 var i = s.startIndex 8 var j = s.startIndex 9 10 //ghiabcdefhelloadamhelloabcdefghi 11 while i <= end{ 12 while j <= end { 13 let range1 = i...(i+j) 14 let range2 = (end-i-j)...(end-i) 15 j += 1 16 guard s[range1] == s[range2] else { continue } 17 result += 1 18 break 19 } 20 21 i += j 22 j = 0 23 } 24 return result 25 } 26 }

?

轉載于:https://www.cnblogs.com/strengthen/p/11297775.html

總結

以上是生活随笔為你收集整理的[Swift]LeetCode1147. 段式回文 | Longest Chunked Palindrome Decomposition的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91人妻一区二区三区蜜臀 | 国产午夜精品久久久久久久 | 少妇做爰免费理伦电影 | av女优天堂在线观看 | 日本中文字幕有码 | 久久精品成人av | 中文天堂在线观看 | 日韩精品一区二区三区中文字幕 | 久草播放| 国产天堂视频 | 欧美绿帽交换xxx | 男人肌肌桶女人肌肌 | 国产免费的av| 日韩毛片在线观看 | 少妇久久久久久被弄高潮 | 激情五月婷婷色 | 色老头综合网 | 国模少妇一区二区三区 | 国产性久久 | 国产真实乱人偷精品视频 | 黄页网址大全免费观看 | 国产成人+综合亚洲+天堂 | 日一日干一干 | 亚洲一区二区久久久 | 国产一区中文字幕 | 精品在线一区二区 | 欧美片一区二区三区 | 99草视频 | 六月激情网| 香蕉视频网址 | 韩国日本中文字幕 | 男人天堂影院 | 日韩精品视频在线看 | 色妇网| 久久久高清免费视频 | 一区二区三区观看 | 成人性生交大片免费看 | 亚洲一区二区国产精品 | 一本色道久久综合精品婷婷 | 91视频社区 | 可以看的av网址 | 国产免费激情 | 借种(出轨高h) | 婷婷一级片 | 欧美xxxx日本和非洲 | 成年人精品 | 久久精品无码专区 | 欧美另类极品videosbest最新版本 | 精品视频无码一区二区三区 | 少妇情理伦片丰满午夜在线观看 | 岛国片在线播放 | 脱美女衣服亲摸揉视频 | 日本成人在线视频网站 | 精品国产69| 日本新japanese乱熟 | 一区二区三区激情 | 校花被c到呻吟求饶 | 亚洲蜜臀av一区二区三区 | 成人在线观看av | 色视频在线观看 | 91在线第一页 | 人人干夜夜操 | 国产96在线| 日批视频免费观看 | 国产强伦人妻毛片 | 性福网站 | 久久wwww| 天天摸天天碰天天爽天天弄 | 91av综合 | 国产成人精品一区二区三区免费 | 色久阁 | 中文字幕乱码人妻无码久久 | 911色| 涩涩屋污 | 亚洲免费观看高清完整版在线 | 极品色综合 | 无码一区二区三区免费视频 | 亚洲天堂久久新 | 天天做天天看 | 日大逼 | 亚洲女人的天堂 | 99热国产| 久久一区二区精品 | 人体内射精一区二区三区 | 欧美中文字幕在线播放 | 999精品在线观看 | 欧美高清一区二区 | 国产精品免费在线 | 国产日韩在线一区 | 国产精品天美传媒 | 亚洲一区美女 | 在线观看日韩一区 | 九九精品免费视频 | 精品人妻无码一区二区三区蜜桃一 | 爱情岛论坛自拍 | 色乱码一区二区三区熟女 | 国产精品福利导航 | 一本之道高清无码视频 | 亚洲视频观看 |