String obsession
Fri Nov 29 2024 16:37:18 GMT+0000 (Coordinated Universal Time)
Saved by
@Asad_ullah
import java.util.*;
public class Main {
private static int maxRemovals(String currentString, List<String> substrings, Map<String, Integer> memo) {
if (memo.containsKey(currentString)) {
return memo.get(currentString);
}
int maxCount = 0;
for (String substring : substrings) {
int position = currentString.indexOf(substring);
if (position != -1) {
String newString = currentString.substring(0, position) + currentString.substring(position + substring.length());
maxCount = Math.max(maxCount, 1 + maxRemovals(newString, substrings, memo));
}
}
memo.put(currentString, maxCount);
return maxCount;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int numSubstrings = sc.nextInt();
List<String> substrings = new ArrayList<>();
for (int i = 0; i < numSubstrings; i++) {
substrings.add(sc.next());
}
String mainString = sc.next();
Map<String, Integer> memo = new HashMap<>();
System.out.println(maxRemovals(mainString, substrings, memo));
}
}
content_copyCOPY
Comments