public static void main(String[] args) {
// TODO Auto-generated method stub
        String str="aa,baa,cac,ddd,ac";
        String regex1="\\baa\\b|\\bac\\b";
Pattern p = Pattern.compile(regex1);
Matcher m = p.matcher(str);
while(m.find()){
System.out.println(m.group());
}
}

解决方案 »

  1.   

    我以为想过滤出aa,ac呢
    那你这个匹配,是前匹配还是后配,还是包含就算?比如这种情况,aa符合条件吗?(aa,aab,baab)
      

  2.   

    1、这种集合的操作,最直接的肯定是按照两两比较的方式,就会出现N^N的情形,针对这种情况。
    2、使用正则表达式Pattern效率是很低的。如果在比较大的数据情况下,尽量减少使用。
    3、数据结构和算法的优化,还是要考虑实际的场景。
         如果单纯按照你题目上的需求,可以按照下面的思路来试试
          A、遍历一次,将字符串全部反转。
          B、将List自然排序。
          C、剩下只需要遍历一次,相邻比较即可。满足条件的数据,在反转输出。
      

  3.   

    我写的只是举个例子,一万多数据,如果按我的跑起来就得10000*10000次,等了好久没有结束循环,让我以为程序出问题了呢。
    楼主。需求不就是一个数组里,各个值之间相比较吗。那运算级肯定是N*N啊。
    嗯呢。看来N*N次比较是少不了了。