如何检查Java中另一个字符串上是否存在一个字符串,但是这里的条件如下:
例如:
字串1:熊猫
字符串2:“ a 1 d 22 n 333 a 4444 p ” < / p>
在这里,字符串2至少需要字母'p','n','d'一次,而字母'a'至少要两次。模式应符合上述条件。
我已经完成了正则表达式,但是我没有解决方案。
public static boolean isContainsAnimal(String message,String animal) {
String animalPattern=generatePattern("panda");
Pattern pattern = Pattern.compile(animalPattern);
Matcher matcher = pattern.matcher(message);
int count = 0;
while (matcher.find()) {
count++;
}
if(count>=1){
return true;
}else
{
return false;
}
}
public static String generatePattern(String animal){
String result="";
for(int i=0;i<animal.length();i++){
result+="[^"+animal.charAt(i)+"]*"+animal.charAt(i);
}
return result;
}
建议我为此问题提供解决方案。
答案 0 :(得分:1)
您的尝试未考虑animal
字符串中字符的不同可能顺序。实际上,对于5个不同的字符串,有5个阶乘不同的顺序。
可以生成所有顺序都为备用的正则表达式,但是结果是……可怕而低效的。
一个更好的主意是找出是否存在重复的字母(例如'a'
)。然后为每个字母生成一个正则表达式,使用“匹配”将每个字母与结果相加。
一个更好的主意是根本不使用正则表达式。他们是这项工作的错误工具。