10

在搜索中找不到任何特定于我的问题的内容:

我有一个字母 {a,b,c},我需要在其中生成一组包含奇数个 a 的字符串。

有效: ababaccccc baaaccccc cab caabaaac

无效:baac caacccb caabbbaac

试图:

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

4

3 回答 3

8

以下正则表达式应该可以工作

\b[bc]*a(([bc]*a){2})*[bc]*\b
于 2012-04-24T12:38:35.217 回答
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");
            }
        }
于 2012-04-24T12:43:06.830 回答
0

不是更容易吗

  1. 在空格上拆分输入字符串
  2. 计算每个元素中的'a'
  3. 基于计数接受或拒绝的结果?
于 2012-04-24T12:45:50.933 回答