📌  相关文章
📜  具有相同左右旋转的数字的最长子序列的Javascript程序

📅  最后修改于: 2022-05-13 01:56:05.681000             🧑  作者: Mango

具有相同左右旋转的数字的最长子序列的Javascript程序

给定一个数字字符串S ,任务是找到左旋转等于右旋转的子序列的最大长度。

例子:

朴素方法:解决问题的最简单方法是生成给定字符串的所有可能子序列,并且对于每个子序列,检查其左旋转是否等于其右旋转。
时间复杂度: O(2 N * N)
辅助空间: O(N)

有效方法:为了优化上述方法,主要观察是子序列应该由单个字符组成,或者应该是由两个字符组成的偶数长度。

请按照以下步骤解决问题:

  • 生成所有可能的两位数。
  • 对于生成的每个两位数,检查字符串中两个数字的交替出现。保持递增计数以存储特定组合的交替子序列的长度。
  • 在字符串的整个遍历之后,检查两个数字是否相等。如果发现是真的,将计数更新为所需的答案。如果两个数字相等,则分别更新countcount – 1到答案,如果计数是偶数或奇数。
  • 对所有可能的组合重复上述步骤并打印获得的最大计数

下面是上述方法的实现:

Javascript


输出:
4

时间复杂度: O(N)
辅助空间: O(1)

有关更多详细信息,请参阅关于具有相同左右旋转的数字的最长子序列的完整文章!