1

我输入了一个字符串类型的句子。

std::string message;
std::getline(std::cin, message);

输入一个句子后,我使用 if 语句将字符串转换为“摩尔斯电码”:

int length = message.length();
for(int i = 0; i < length;i++) //to loop in the message 
{
   if(message[i] == 'A')
       cout << "-.";//and the rest for 'b','c','d'....'z'
}  

我如何获取输入字符串的摩尔斯电码并对其进行解码。例如:如果在莫尔斯电码中是“.-”,则显示“A”,如果“-...”在消息中显示“B”。

4

1 回答 1

8

以这种方式使用二叉树 - 根为空(NULL)。每个孩子都有一个字符'-''。. 这样,您就可以将孔摩尔斯电码解码到树中。现在而不是 NULL 放在最后,把你应该得到的字符放在最后。树应该是这样的:

                                根
                               / \
                              '-' '。
                                \
                                 '。'
                                    \
                                     '一个'

等等现在你可以在 O(lg n) 中找到 n = 树大小时的字符。

于 2012-08-11T18:36:46.763 回答