import java.util.ArrayList;
import java.util.List;
public class RemoveLastN {
// Remove last n occurrences of substring
public static String removeLastN(String s, String sub, int n) {
List<Integer> positions = new ArrayList<>();
int pos = s.indexOf(sub);
// Find all occurrences
while (pos != -1) {
positions.add(pos);
pos = s.indexOf(sub, pos + sub.length());
}
// Remove from the end
StringBuilder sb = new StringBuilder(s);
for (int i = positions.size() - 1; i >= 0 && n > 0; i--, n--) {
int start = positions.get(i);
sb.delete(start, start + sub.length());
}
return sb.toString();
}
// Remove extra spaces (collapse multiple spaces, trim ends)
public static String removeExtraSpaces(String s) {
String[] parts = s.trim().split("\\s+");
return String.join(" ", parts);
}
public static void main(String[] args) {
String text = "abc xyz xyz abc xyzabcxyz abc";
String result = removeLastN(text, "xyz", 3);
System.out.println(result);
String cleaned = removeExtraSpaces(result);
System.out.println(cleaned);
}
}
/*
run:
abc xyz abc abc abc
abc xyz abc abc abc
*/