常用专有名词缩写,持续更新

本文深入解析了802.11协议中用于提高网络吞吐量的A-MPDU和A-MSDU聚合帧技术。A-MPDU通过聚合多个MPDU减少PHY头信息,而A-MSDU则通过聚合MSDU减少MAC头信息,两者协同作用有效降低协议负载。

NIC------网络接口卡,即网卡

NAPI----新API

A-MPDU-----80211n标准采用A-MPDU聚合帧格式,即将多个MPDU聚合为一个A-MPDU,只保留一个PHY头,删除其余MPDU的PHY头,减少了传输每个MPDU的PHY头的附加信息,同时也减少了ACK帧的数目,从而降低了协议的负荷,有效的提高网络吞吐量。

A-MSDU-----802.11协议定义了一个新的MAC特性A-MSDU,该特性实现了将多个MSDU组合成一个MSDU发送,与A-MPDU类似,通过聚合,A-MSDU减少了传输每个MSDU的MAC头的附加信息,提高了MAC层的传输效率。

TXOP------transmission opportunity 发送机会,无线信道接入的基本单元,获得TXOP的站点在TXOP LIMIT时间内不再重新竞争停产、连续使用信道传输多个数据帧。





我们来分析这个问题,并给出一个完整的解决方案。 ### 问题理解 我们需要处理一个字符串,找出其中符合特定格式的**专有名词**,并将其缩写: #### 专有名词的定义: - 格式为用连字符 `"-"` 连接的多个单词(至少两个)。 - 每个“连接词”必须: - 仅包含大小写字母; - 首字母大写(即每个单词的第一个字符是大写字母,其余可以是小写或大写,但不能有非字母字符)。 - 缩写规则:取每个连接词的首字母,拼起来形成缩写。 #### 示例: - `"Knuth-Morris-Pratt"` → 是专有名词缩写为 `"KMP"` - `"Knuth.morris-Pratt"` → 包含 `.` → 不合法 - `"Knuth_morris_Pratt"` → 使用 `_` 而不是 `-` → 不合法 - `"knuth-Morris-Pratt"` → 第一个词首字母小写 → 不合法 我们要在整个文章中找到所有这样的专有名词,替换为它们的缩写。 --- ### 解决方案思路 1. 使用正则表达式匹配可能的 `"..."` 形式的结构。 2. 对每一个匹配到的由 `'-'` 分隔的词组进行合法性判断: - 所有部分都只包含字母; - 每个部分首字母大写; 3. 如果合法,则提取每个部分的首字母组成缩写; 4. 替换原文中的原词为缩写。 --- ### Python 实现代码 ```python import re def abbreviate_proper_nouns(text): # 正则表达式:匹配由 '-' 连接的多个单词(至少两个) # 单词要求:仅字母,且首字母大写 def is_valid_word(word): return len(word) > 0 and word[0].isupper() and word.isalpha() def get_abbreviation(match): phrase = match.group() words = phrase.split('-') # 至少两个连接词 if len(words) < 2: return phrase # 检查每个词是否满足条件 if all(is_valid_word(word) for word in words): return ''.join(word[0] for word in words) # 取首字母缩写 else: return phrase # 不符合条件,不替换 # 使用正则查找所有由 '-' 连接的潜在名词短语 # 注意:这里要确保前后不是字母,避免误匹配 # \b 表示单词边界,但由于 '-' 不是字母,所以需要显式处理 pattern = r'\b[A-Za-z]+(?:-[A-Za-z]+)+\b' result = re.sub(pattern, get_abbreviation, text) return result # 主程序 if __name__ == "__main__": text = input().strip() print(abbreviate_proper_nouns(text)) ``` --- ### 代码解释 - `re.sub(pattern, get_abbreviation, text)`: - 查找所有符合模式的字符串(由 `-` 连接的字母串),然后调用 `get_abbreviation` 函数决定替换成什么。 - `pattern = r'\b[A-Za-z]+(?:-[A-Za-z]+)+\b'`: - `\b`:单词边界; - `[A-Za-z]+`:一个或多个字母组成的单词; - `(?:-[A-Za-z]+)+`:一个或多个 `-word` 结构; - 整体表示至少两个由 `-` 连接的纯字母单词。 - `is_valid_word(word)`: - 判断该词是否以大写字母开头且全为字母。 - `get_abbreviation`: - 将合法的专有名词转换为首字母缩写。 --- ### 示例测试 **输入:** ``` The Knuth-Morris-Pratt algorithm is named after Knuth, Morris and Pratt. But not knuth-morris-pratt or AC-DC-Band. ``` **输出:** ``` The KMP algorithm is named after Knuth, Morris and Pratt. But not knuth-morris-pratt or ADCB. ``` 说明: - `"Knuth-Morris-Pratt"` → 合法 → `"KMP"` - `"AC-DC-Band"` → 虽然都是首字母大写,但 `Band` 的 `B` 大写没问题,但整体合法?等等再检查一下! ⚠️ 等等!`AC-DC-Band` 中 `AC`, `DC`, `Band` 都是首字母大写 + 全字母 → 合法 → 缩写为 `ADB`?不对,应该是 `A-D-B` → `ADB`? 实际上: - `AC` → A - `DC` → D - `Band` → B → `ADB` 但是注意:题目说“每个连接词仅包含大小写字母且首字母都为大写”,`AC` 和 `DC` 都是全大写,也满足“首字母大写”,所以是合法的。 所以 `AC-DC-Band` → `ADB` 但如果是 `ac-DC-Band`,第一个词首字母小写 → 不合法。 --- 修正例子输出应为: ``` The KMP algorithm is named after Knuth, Morris and Pratt. But not knuth-morris-pratt or ADB. ``` 而 `knuth-morris-pratt` 因为首字母小写 → 不合法 → 不替换。 --- ### 更多测试案例 | 输入 | 输出 | |------|------| | `Hello World` | `Hello World` (无 `-`) | | `Knuth-Morris-Pratt` | `KMP` | | `XMLHttpRequest` | `XMLHttpRequest` (没有 `-`,不匹配) | | `North-American-Deep-Learning-Conference` | `NADLC` | | `north-American-Deep` | `north-American-Deep` (第一项首字母小写) | ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值