class Solution: def mostCommonWord(self, paragraph: str, banned: List[str]) -> str: ban = set(banned) freq = Counter() word, n = "", len(paragraph) for i in range(n + 1): if i < n and paragraph[i].isalpha(): word += paragraph[i].lower() elif word: if word not in ban: freq[word] += 1 word = "" maxFreq = max(freq.values()) return next(word for word, f in freq.items() if f == maxFreq)
时间: 2024-02-15 08:14:49 浏览: 27
这是一个 Python 中的类 `Solution`,其中包含一个方法 `mostCommonWord`,该方法接受一个字符串 `paragraph` 和一个列表 `banned` 作为参数,并返回出现次数最多的不在 `banned` 列表中的单词。
该方法的实现逻辑大致如下:
- 首先将 `banned` 转换为集合 `ban`,以便于查询。
- 然后使用 Python 中的 `Counter` 对象 `freq` 统计每个单词出现的次数。
- 接着,从头到尾遍历 `paragraph`,将连续的字母字符构成的单词转换为小写字母形式,并判断该单词是否在 `ban` 集合中。
- 如果该单词不在 `ban` 集合中,则将其出现次数加 1。
- 最后,从 `freq` 中找到出现次数最多的单词,并返回其值。
需要注意的是,在 `next()` 函数中使用了一个 Python 中的生成器表达式,用于在 `freq` 中寻找出现次数最多的单词。
相关问题
TypeError: replace() argument 2 must be str, not int
这个错误通常是由于 Python 尝试将整型数据类型转换为字符串类型时引起的。可能是在你的代码中将整数值传递给了 `replace()` 方法,而这个方法只能用字符串类型的参数进行替换。你可以将整数值转换为字符串类型来解决这个问题。
以下是将整数值转换为字符串类型的示例代码:
```python
import docx
# 打开 Word 文件
doc = docx.Document('example.docx')
# 定义一个字典用于存储键值对
data = {'key1': 'value1', 'key2': 'value2', 'key3': 123}
# 遍历所有段落
for paragraph in doc.paragraphs:
# 遍历段落中的所有运行
for run in paragraph.runs:
# 如果运行中的文本包含在字典中,就将其替换为相应的值
for key, value in data.items():
if key in run.text:
# 如果值是整数类型,将其转换为字符串类型
if isinstance(value, int):
value = str(value)
run.text = run.text.replace(key, value)
# 保存 Word 文件
doc.save('example.docx')
```
以上代码中,我们使用了 `isinstance()` 函数判断值是否为整数类型,如果是则将其转换为字符串类型。这样就可以避免 `replace()` 方法的参数类型错误了。
qt 如何向word插入标题 code : -2146822454
标题 Code: -2146822454 是指在使用Qt向Word插入标题时出现的错误代码,一般是因为插入的标题格式不正确或者文件路径有误导致。
若要向Word中插入标题,可以使用Qt中的QAxObject类来控制Word应用程序。首先,需要创建QAxObject对象连接到Word应用程序:
```c++
QAxObject* wordApp = new QAxObject("Word.Application");
```
然后,可以使用wordApp调用Word中的API函数来插入标题:
```c++
QAxObject* documents = wordApp->querySubObject("Documents");
QAxObject* document = documents->querySubObject("Add()");
QAxObject* paragraphs = document->querySubObject("Paragraphs");
QAxObject* paragraph = paragraphs->querySubObject("Add()");
QAxObject* headingStyle = paragraph->querySubObject("Style");
headingStyle->setProperty("Value", "Heading 1");
QAxObject* range = paragraph->querySubObject("Range");
range->setProperty("Text", "标题内容");
```
其中,“Heading 1”表示标题的格式,“标题内容”代表要插入的标题内容。通过以上代码可以在Word中插入一级标题。
如果出现标题 Code: -2146822454 的错误,可以先检查是否插入的标题格式正确,例如是否存在“Heading 1”这种格式。还要确保文件路径正确,以便正确打开Word文档。
总之,Qt向Word插入标题需要调用Word的API函数,确保标题格式正确并确保文件路径正确,才能避免出现标题 Code: -2146822454 错误。