gpt4 book ai didi

java - 平衡字符串正则表达式

转载 作者:行者123 更新时间:2023-11-29 07:26:27 25 4
gpt4 key购买 nike

所以这里的问题是:
一个字符串只由a、b、c、d组成。

如果满足以下条件,则称该字符串是平衡的:

  • a 和 c 出现的总和是偶数
  • b 和 d 出现的总和是偶数

  • 我必须编写一个正则表达式来检查字符串是否是java中的平衡字符串。
    请帮帮我。

    最佳答案

    对于第一个条件。 a的总和和 c是偶数,这意味着您可以匹配成对 ac , aa , cacc .

    使用正则表达式它被写成

    ([ac]{2})*

    由于这些 a 中还有其他字符和 c ,所以它变成
    (([^ac]*[ac]){2})*[^ac]*

    和第二个条件一样
    (([^bd]*[ac]){2})*[^bd]*

    因为输入字符串应该只包含 a,b,c,d , 所以 [^ac]应该是 [bd] , [^bd]应该是 [ac] .
    String cond1 = "(([bd]*[ac]){2})*[bd]*";
    String cond2 = "(([ac]*[bd]){2})*[ac]*";
    String input = "abcdabcd";
    boolean matches = Pattern.matches(cond1, input) && Pattern.matches(cond2, input);

    This question向我们展示了如何使用前瞻将这两个条件组合成一个正则表达式:
    String regex = "(?=^(([ac]*[bd]){2})*[ac]*$)(([bd]*[ac]){2})*[bd]*";

    关于java - 平衡字符串正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51784325/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com