私は空き時間にコードインタビューをクラッキングしています。 質問は次のように述べています。ユニーク:文字列がすべて一意の文字を持つかどうかを判断するアルゴリズムを実装します。追加のデータ構造を使用できない場合はどうなりますか?配列と文字列コードをクラックするインタビュー6th ed Soln 1.1
私の実装では、次のとおり
BOOL UniqueCharsHash(文字列ワード){
map<char, bool> uniqueChar; //keyType, valueType
for (int i = 0; i < word.length(); i++) {
char letter = tolower(word[i]);
if (!uniqueChar[letter]) {
uniqueChar[letter] = true;
} else {
return false;
}
}
return true;
}
//O(n^2) run time using a two loops (1 outer and 1 inner)
bool UniqueCharNoDS(string word) {
for (int i = 0; i < word.length() - 1; i++) {
for (int j = i + 1; j < word.length(); j++) {
if (word[i] == word[j]) {
return false;
}
}
}
return true;
}
それは述べブックのヒント部分で:
- ハッシュテーブル
- を試すビットベクトルは
- 役に立つかもしれない、あなたはO(Nlogn)時間
私は3つの方法で、NlogN時間のいずれかが表示されるのだろうか?
マージソートの修正版マージの変形可能性がありますO(NlogN)時間を与える – Oswald