检查字符串是否具有相同频率的所有字符,并且 Python 中允许一种变体

假设我们有一个小写字符串 s,我们必须检查是否可以通过删除最多 1 个字符来将 s 转换为有效字符串。这里一个有效的字符串意味着一个字符串 str ,对于 str 中的所有唯一字符,每个字符的频率都是相同的。

因此,如果输入类似于 s = "xyyzx",那么输出将为 True,因为我们可以删除 z,然后字符串将为 "xyyx",其中 x 和 y 的出现次数相同。

为了解决这个问题,我们将按照以下步骤操作 -

  • 大小:= 26

  • 发生 := 大小为 26 的数组。这是存储 s 中每个字符的频率

  • occr1:= 0

  • occr1_cnt := 0

  • 对于范围为 0 到大小 - 1 的 i,请执行

    • occr1 := 出现[i]

    • occr1_cnt := 1

    • 从循环中出来

    • 如果发生 [i] 不为 0,则

    • occr2 := 0

    • occr2_cnt := 0

    • 对于 i+1 到 size - 1 范围内的 j,执行

      • 如果发生 [j] 与 occr1 相同,则

      • 否则,

      • occr1_cnt := occr1_cnt + 1

      • occr2_cnt := 1

      • occr := 出现[j]

      • 从循环中出来

      • 如果出现次数[j] 不为 0,则

      • 对于 j+1 到 size - 1 范围内的 k,执行

        • 返回错误

        • 如果发生 [k] 与 occr1 相同,则

        • 如果发生 [k] 与 occr2 相同,则

        • 否则,

        • occr1_cnt := occr1_cnt + 1

        • occr2_cnt := occr2_cnt + 1

        • 返回错误

        • 如果出现[k] 不为0,则

        • 如果 occr1_cnt > 1 且 occr2_cnt > 1,则

        • 返回真

        让我们看看以下实现以获得更好的理解 -

        示例

        size = 26
        def solve(str):
           occurrence = [0]*size
           for i in range(len(str)): occurrence[ord(str[i])-ord('a')] += 1
              occr1 = 0
              occr1_cnt = 0
              for i in range(size):
                 if (occurrence[i] != 0):
                    occr1 = occurrence[i]
                    occr1_cnt = 1
                    break
           occr2 = 0
           occr2_cnt = 0
           for j in range(i+1,size):
              if (occurrence[j] != 0):
                 if (occurrence[j] == occr1):
                    occr1_cnt += 1
                 else:
                    occr2_cnt = 1
                    occr = occurrence[j]
                    break
           for k in range(j+1,size):
              if occurrence[k] != 0:
                 if (occurrence[k] == occr1):
                    occr1_cnt += 1
              if (occurrence[k] == occr2):
                 occr2_cnt += 1
              else:
                 return False
              if occr1_cnt > 1 and occr2_cnt > 1:
                 return False
           return True
        s = "xyyzx"
        print(solve(s))

        输入

        "xyyzx"
        输出结果
        True

        猜你喜欢