【问题标题】:Separate string into balanced substrings with equal numbers of R and L characters将字符串分成 R 和 L 字符数相等的平衡子串
【发布时间】:2021-03-15 13:35:31
【问题描述】:

作为作业,我需要编写一个程序,不断提示用户输入平衡字符串,直到获得有效输入。就本程序而言,平衡字符串定义为具有非零、相等数量的字符“R”(大写)和字符“L”(大写),而不管是否存在其他字符。

然后程序将平衡输入字符串分离/划分为尽可能多的平衡子字符串并生成它们的列表

例如:

输入:

Please enter a string containing an equal number or 'R' and 'L': RLRLRLRLRLab

输出:

['RL', 'RL', 'RL', 'RL', 'RLab']

我真的很困惑如何实现这段代码。我知道如何查找输入中是否存在 R 或 L,但仅此而已。我不需要完整的代码,只是一个起点。

【问题讨论】:

  • ["RL" + i for i in s.split("RL")]

标签: python python-3.x algorithm loops


【解决方案1】:

以下是应该解决此问题的算法的起点:

  • 维护一个用0初始化的变量balance
  • 创建一个空字符串temp
  • 遍历输入字符串中的每个字符:
    • 如果字符是R,则将balance加1
    • 如果字符是L,则将balance减1
    • 将字符附加到temp
    • 如果balance 为0 且temp 包含任何L 或R 字符,则将temp 添加到结果列表并将其重置为空字符串

可能存在一些需要调整或扩展此算法的极端情况。例如,处理输入字符串末尾的剩余字符。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-10
    • 2021-08-11
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    相关资源
    最近更新 更多