Leetcode: 【每日一题】- 2020-03-31 - 1147. 段式回文

Created on 31 Mar 2020  ·  2Comments  ·  Source: azl397985856/leetcode

段式回文 其实与 一般回文 类似,只不过是最小的单位是 一段字符 而不是 单个字母。

举个例子,对于一般回文 "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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-chunked-palindrome-decomposition
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

DP Daily Question Hard LeetCode String Two Pointer stale 回文

Most helpful comment

/**
 * 贪心解法
 * @param {string} text
 * @return {number}
 */
var longestDecomposition = function(text) {
  if (text === '') {
    return 0
  }
  for(let i = 1; i <= text.length / 2; i++) {
    if (text.substring(0, i) === text.substring(text.length - i)) {
      return 2 + longestDecomposition(text.substring(i, text.length - i))
    }
  }
  return 1
};

All 2 comments

/**
 * 贪心解法
 * @param {string} text
 * @return {number}
 */
var longestDecomposition = function(text) {
  if (text === '') {
    return 0
  }
  for(let i = 1; i <= text.length / 2; i++) {
    if (text.substring(0, i) === text.substring(text.length - i)) {
      return 2 + longestDecomposition(text.substring(i, text.length - i))
    }
  }
  return 1
};

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Was this page helpful?
0 / 5 - 0 ratings