我有這段代碼找到所有的字符串對形成迴文。例如)D:{AB,DEEDBA} => AB + DEEDBA - > YES並將被返回。另一個例子{NONE,XENON} => NONE + XENON => YES。Pair Palindrome
這會是什麼運行時間?
public static List<List<String>> pairPalindrome(List<String> D) {
List<List<String>> pairs = new LinkedList<>();
Set<String> set = new HashSet<>();
for (String s : D) {
set.add(s);
}
for (String s : D) {
String r = reverse(s);
for (int i = 0; i <= r.length(); i++) {
String prefix = r.substring(0, i);
if (set.contains(prefix)) {
String suffix = r.substring(i);
if (isPalindrom(suffix)) {
pairs.add(Arrays.asList(s, prefix));
}
}
}
}
return pairs;
}
private static boolean isPalindrom(String s) {
int i = 0;
int j = s.length() - 1;
char[] c = s.toCharArray();
while (i < j) {
if (c[i] != c[j]) {
return false;
}
i++;
j--;
}
return true;
}
private static String reverse(String s) {
char[] c = s.toCharArray();
int i = 0;
int j = c.length - 1;
while (i < j) {
char temp = c[i];
c[i] = c[j];
c[j] = temp;
i++;
j--;
}
return new String(c);
}
你做了什麼來分析自己的運行時複雜性? –
我會說O(NK),N是D的長度,K是D中最長的單詞長度 – codereviewanskquestions
你是如何得出這個結論的?請編輯您的問題以包含您的分析。 –