我写了一个函数,我需要知道它的大 O 符号。我自己尝试过解决这个问题,我得到了 O(N^2),但是有人告诉我这不是正确的答案。
有人可以告诉我正确的符号是什么,并逐步解释他们是如何得出这个答案的吗?
函数如下。
提前致谢
public static string Palindrome(string input)
{
string current = string.Empty;
string longest = string.Empty;
int left;
int center;
int right;
if (input == null || input == string.Empty || input.Length == 1) { return input; }
for (center = 1; center < input.Length -1; center++)
{
left = center - 1;
right = center + 1;
if (input[left] == input[center])
{
left--;
}
while (0 <= left && right < input.Length)
{
if (input[left] != input[right])
{
break;
}
current = input.Substring(left, (right - left + 1));
longest = current.Length > longest.Length ? current : longest;
left--;
right++;
}
}
return longest;
}