当前位置: 面试刷题>> 单词的添加与查找 (经典算法题500道)
### 题目描述补充
在码小课网站中,有一个单词库管理系统,用于管理用户添加的单词以及快速查找这些单词是否存在。系统支持以下功能:
1. **添加单词**:用户可以向单词库中添加新的单词,每个单词为不超过100个字符的字符串,且不区分大小写。
2. **查找单词**:用户可以输入一个单词,系统需快速判断该单词是否已存在于单词库中,并返回结果。
要求实现这个功能,考虑到性能与内存使用的平衡,使用合适的数据结构进行实现。
### 示例代码
#### PHP 示例
```php
class WordLibrary {
private $words;
public function __construct() {
$this->words = [];
}
// 添加单词,转为小写以确保不区分大小写
public function addWord($word) {
$word = strtolower($word);
if (!in_array($word, $this->words)) {
$this->words[] = $word;
}
}
// 查找单词,转为小写后进行查找
public function findWord($word) {
$word = strtolower($word);
return in_array($word, $this->words);
}
}
// 使用示例
$library = new WordLibrary();
$library->addWord("Hello");
$library->addWord("world");
$library->addWord("Hello"); // 重复添加不应增加
echo $library->findWord("hello") ? "单词存在" : "单词不存在"; // 输出:单词存在
echo PHP_EOL;
echo $library->findWord("code") ? "单词存在" : "单词不存在"; // 输出:单词不存在
```
#### Python 示例
```python
class WordLibrary:
def __init__(self):
self.words = set()
# 添加单词,转为小写以确保不区分大小写
def add_word(self, word):
self.words.add(word.lower())
# 查找单词,转为小写后进行查找
def find_word(self, word):
return word.lower() in self.words
# 使用示例
library = WordLibrary()
library.add_word("Hello")
library.add_word("world")
library.add_word("Hello") # 重复添加无影响
print("单词存在" if library.find_word("hello") else "单词不存在") # 输出:单词存在
print("单词存在" if library.find_word("code") else "单词不存在") # 输出:单词不存在
```
#### JavaScript 示例
```javascript
class WordLibrary {
constructor() {
this.words = new Set();
}
// 添加单词,转为小写以确保不区分大小写
addWord(word) {
this.words.add(word.toLowerCase());
}
// 查找单词,转为小写后进行查找
findWord(word) {
return this.words.has(word.toLowerCase());
}
}
// 使用示例
const library = new WordLibrary();
library.addWord("Hello");
library.addWord("world");
library.addWord("Hello"); // 重复添加无影响
console.log(library.findWord("hello") ? "单词存在" : "单词不存在"); // 输出:单词存在
console.log(library.findWord("code") ? "单词存在" : "单词不存在"); // 输出:单词不存在
```
这些示例均考虑了不区分大小写的情况,并通过合适的数据结构(PHP 的数组、Python 和 JavaScript 的 Set)实现了高效的添加与查找操作。码小课网站中有更多关于数据结构与算法的相关内容分享给大家学习。