Der String
s
hat n
Zeichen und kann beliebig wachsen.
Wie ist die Zeitkomplexität dieser Substring-Methode? O(n^2)
, O(n^3)
oder etwas ganz anderes?
Vielen Dank
import java.util.Comparator;
import java.util.TreeSet;
public class Algorithm {
record Elem(int from, int to) {
}
public char substringsAlgorithm(final String s, final int m) {
TreeSet<Elem> set = new TreeSet<>(Comparator.comparing(e -> s.substring(e.from(), e.to())));
for (int i = 0; i < s.length(); i++) {
for (int j = i + 1; j <= s.length(); j++) {
set.add(new Elem(i, j));
}
}
int m1 = m;
for (Elem e : set) {
int len = e.to() - e.from();
if (m1 < len) {
return s.substring(e.from(), e.to())
.charAt(m1);
}
m1 -= len;
}
throw new IllegalArgumentException();
}
public static void main(String[] args) {
System.out.println(
new Algorithm().substringsAlgorithm("dbac", 2) // -> c
);
}
}