|
|
1
1
没有简单的优化结构-对于任何给定的固定映射,可能会有对精确映射的恶魔般的位旋转优化,在不同的架构和不同的输入上是好是坏。地图/字典应该一直都很好,代码也很简单。
因为这是一个学习练习,您需要尝试不同的可能性:对于文本->morse,您可以使用数组而不是地图/字典。也许令人惊讶的是,这在C++中是很难做到的,而且是完全可移植的。以下假设所有大写字母
如果您愿意假设您的代码只会在基本字符集包含连续运行的字母的机器上运行(ASCII是这样,但EBCDIC不是这样),您可以稍微整理一下:
Python版本可以假设ASCII(我认为),您必须使用
要处理除大写字母以外的任何字符,您需要一个更大的数组(为每个可能的字符值包含一个条目),或者需要多个带有边界检查、标点符号的特殊大小写代码等的数组。 |
|
|
2
3
给予:
|
|
|
3
2
|
|
|
4
2
在Python中,字符串是不可变的,因此可能(取决于您对输出所做的操作)需要创建一个包含所有简单替换结果的列表。比如:
如果你想支持不同国家版本的摩尔斯电码等,你就需要相应地变得更喜欢。
|
|
|
5
2
在Python方面,string类的translate函数是一个不错的选择。在C++方面,我将使用一个STD::map来保持字符映射。然后我可能会使用std::for\ each进行查找和交换。 |
|
|
6
1
|
|
|
7
0
Python(需要字符串):
|