我正在做一个关于设置交集的 codeeval 练习题。我认为网站期望输入和输出的方式故意使之复杂化。
问题的具体部分是取两组(实际上是字符串数组,确切的问题在http://codeeval.com/open_challenges/30/),找到它们的交集,按顺序打印它们,逗号分隔。我已经使用 TreeSet 解决了它,但它有点令人费解且过于复杂,现在我正在尝试使用正则表达式让它变得更简洁。
我找到了这个 -
String common = bothSets[0].replaceAll("[^" + bothSets[1] + "]", "");
在另一个关于堆栈溢出的问题中。它留下了前导逗号,我试图用它来修复
int subIndex = 0;
while(common.charAt(subIndex) == ',')
subIndex++;
System.out.println(common.substring(subIndex, common.length()));
除了在小字符串大小或空字符串大小等边缘情况下,它有效,然后它爆炸了。我认为只修复正则表达式并完全避免while循环会更干净,但我不知道如何在上述正则表达式中添加“删除前导逗号”。
最后,我的原始解决方案在这里 - http://pastebin.com/10NuBevB - 我是否正确地寻找像正则表达式方法这样的替代方法,我对那个 pastebin 代码不是特别满意,即使它有效并且这没有还没有。
任何方向表示赞赏。