“Cracking the Coding Interview”一书和这个Stack Overflow 问题讨论了一个确定字符串是否包含所有唯一字符的函数。这本书使用位移的答案在问题链接中(请参阅页面上的顶部答案),我不会在这里重复。
Java 的答案具有 O(N) 的复杂性,我无法理解 O(N) 的实际含义。我其实想知道我刚才写的这个实现的时间复杂度是多少。是 O(N) 吗?如何计算复杂性?
static void Main(string[] args)
{
string stringToCheck ;
bool hasAllUniqueChars = false;
stringToCheck = "Test";
hasAllUniqueChars = CheckForUniqueChars(stringToCheck);
Console.WriteLine("String is Unique {0}", hasAllUniqueChars);
Console.Read();
}
private static bool CheckForUniqueChars(string stringToCheck)
{
for (int i = 0; i < stringToCheck.Length - 1; i++)
{
for (int j = i; j < stringToCheck.Length - 1; j++)
{
if (Char.ToUpper(stringToCheck.ElementAt(i)) ==
Char.ToUpper(stringToCheck.ElementAt(j+1)))
{
return false;
}
}
}
return true;
}
这对 Test、test、Hello 返回 false,对 SuperMan、SpiderMan 和 Sponge 返回 true,并且工作正常。
谢谢