تعداد دفعات تکرار رشتهی دوم در رشتهی اول
البته من با روش Regex عبارتهای منطقی نوشتم
public class RepeatInString {
private static Consumer<Integer> cOut = System.out::println;
private static Consumer<String> sOut = System.out::println;
public static void main(String[] args) {
HashMap<String,String> strs = new HashMap<>();
strs.put("sal","salam");
strs.put("gol","golgoli");
strs.put("sas","sasasas");
strs.put("nan","nanananan");
strs.put("n","nananananiiinan");
strs.put("na","nananananiiinan");
strs.put("zoz","zozozozozozo");
strs.put(null,null);
strs.put("","");
strs.forEach((k,v)-> System.out.printf("%s , %s -> , %d \n",v , k ,StringInString(v,k)));
private static int StringInString(String one, String two) {
int cnt = 0;
if (one == null || two == null || one.isEmpty() || two.isEmpty())
return cnt;
String quantifier = two.charAt(0)+"*?"+two.substring(1,two.length());
//String quantifier1 = two.concat("*?");
Pattern pattern = Pattern.compile(two.length() > 1 ? quantifier : two);
Matcher matcher = pattern.matcher(one);
Predicate<String> sPredicate = pattern.asPredicate();
boolean a = sPredicate.test(one);
while (matcher.find()) cnt++;
return cnt;
}
}
}