找到K的最大值,使得子序列A和B存在并应满足上述条件

问题描述 投票:2回答:4

给出长度为S的字符串n。选择一个整数K以及两个长度为A的非空子序列BK,使其满足以下条件:

  1. A = B,即对于每个iith中的A字符与ith中的B字符相同。
  2. 让我们表示用于将A构造为a1,a2,a3,...,an的索引,其中ai belongs to SB构造为b1,b2,b3,...,bn的索引,其中bi belongs to S。如果用A表示BM中的公共索引数,则M + 1 <= K

找到K的最大值,以便可以找到满足上述条件的子序列AB

约束:0 < N <= 10^5

我观察到的是:

  • K = 0的值,如果给定字符串中的字符数全部不同,即S = abcd
  • K = length of S - 1,如果字符串中的所有字符都相同,即S = aaaa
  • M的值不能等于K,因为这样M + 1 <= K不会为真,即您不能具有满足AB的子序列A = Ba1 = b1, a2 = b2, a3 = b3, ..., an = bn。 >
  • 如果字符串S是回文,则K = (Total number of times a character is repeated in the string if the repeatation count > 1) - 1。即S = tenet,然后将t重复2次,e重复2次,重复字符的总次数= 4,K = 4 - 1 = 3
  • 我在设计算法时无法解决上述问题。

如果需要更多说明,请在评论中告诉我。

给出长度为n的字符串S。选择一个整数K以及两个长度为K的非空子序列A和B,使其满足以下条件:A = B,即对于每个i,A中的第i个字符...

string algorithm data-structures dynamic-programming
4个回答
1
投票
我相信我们只是在寻找最接近的相等字符对,因为从A和B中排除的唯一字符将是该对字符中的一个,并且介于这两个字符之间。

2
投票
(更新:请参见O(n) answer。]

0
投票
最大长度

substring


0
投票
我删除了先前的答案,因为我认为我们不需要类似LCS的解决方案(LCS =最长公共子序列)。
© www.soinside.com 2019 - 2024. All rights reserved.