正则表达式:奇数出现的奇数

时间:2012-04-24 12:34:08

标签: regex

在搜索中找不到我的问题:

我有一个字母{a,b,c},我需要生成一组具有奇数个字符串的字符串。

有效:ababaccccc baaaccccc cab caabaaac

InValid :baac caacccb caabbbaac

尝试:

\b[bc]*a{3}[bc]*\b但这非常有限。

3 个答案:

答案 0 :(得分:8)

以下正则表达式should work

\b[bc]*a(([bc]*a){2})*[bc]*\b

答案 1 :(得分:2)

如果你需要没有正则表达式的解决方案,即Java:

String arr[] = {"ababaccccc",  "baaaccccc" , "caabaaac", "baac", "caacccb", "caabbbaac"};   

for (String string : arr) {
            int counter = 0;
            for (int i = 0; i < string.length(); i++) {
                if (string.charAt(i) == 'a') {
                    counter++;
                }
            }
            if ((counter & 1) == 0) {
                System.out.println(string + " is invalid");
            } else {
                System.out.println(string + " is valid");
            }
        }

答案 2 :(得分:0)

不是更容易

  1. 将输入字符串拆分为空格
  2. 计算每个元素中的'a'
  3. 根据计数的结果接受还是拒绝?