当前位置: 面试刷题>> 独特的莫尔斯码 (经典算法题500道)


### 题目描述补充 **题目:独特的莫尔斯码** 莫尔斯码是一种时通时断的信号代码,通过不同的排列顺序来表达不同的英文字母、数字和标点符号等。在无线电通讯中广泛使用。现要求编写一个程序,该程序接收一个由英文字母(大写或小写)、数字和空格组成的字符串作为输入,将其转换成对应的莫尔斯码表示,并输出转换后的莫尔斯码字符串。注意,输入字符串中的空格在输出中应保留其分隔作用,但不需要转换为莫尔斯码。 **莫尔斯码对照表**(部分示例): - A: .- - B: -... - C: -.-. - D: -.. - E: . - 1: .---- - 2: ..--- - ... (空格无需转换,直接保留) **要求**: 1. 输入字符串可能包含多个单词,单词之间由空格分隔。 2. 输出的莫尔斯码字符串中,单词之间仍用空格分隔。 3. 字母需转换为对应的大写莫尔斯码表示,因为莫尔斯码不区分大小写。 ### 示例代码 #### PHP 示例 ```php '.-', 'B' => '-...', 'C' => '-.-.', 'D' => '-..', 'E' => '.', 'F' => '..-.', 'G' => '--.', 'H' => '....', 'I' => '..', 'J' => '.---', 'K' => '-.-', 'L' => '.-..', 'M' => '--', 'N' => '-.', 'O' => '---', 'P' => '.--.', 'Q' => '--.-', 'R' => '.-.', 'S' => '...', 'T' => '-', 'U' => '..-', 'V' => '...-', 'W' => '.--', 'X' => '-..-', 'Y' => '-.--', 'Z' => '--..', '1' => '.----', '2' => '..---', // 可以继续添加其他数字和符号的莫尔斯码 ]; $words = explode(' ', strtoupper($input)); // 转换为大写并分割单词 $output = ''; foreach ($words as $word) { $morseWord = ''; for ($i = 0; $i < strlen($word); $i++) { $char = $word[$i]; if (isset($morseCodeTable[$char])) { $morseWord .= $morseCodeTable[$char] . ' '; // 添加空格分隔字符的莫尔斯码 } } $output .= rtrim($morseWord) . ' '; // 移除尾部空格并添加单词间空格 } return rtrim($output); // 移除最后的空格 } // 示例使用 echo morseCodeTranslator("HELLO WORLD 123"); // 输出: .... . .-.. .-.. --- --- .--. ---. .---- ..--- ...-- ?> ``` #### Python 示例 ```python def morse_code_translator(input_str): morse_code_table = { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '1': '.----', '2': '..---', # 可以继续添加 } words = input_str.upper().split() output = '' for word in words: morse_word = ' '.join(morse_code_table.get(char, '') for char in word) output += morse_word + ' ' return output.strip() # 示例使用 print(morse_code_translator("HELLO WORLD 123")) # 输出: .... . .-.. .-.. --- --- .--. ---. .---- ..--- ...-- ``` #### JavaScript 示例 ```javascript function morseCodeTranslator(input) { const morseCodeTable = { 'A': '.-', 'B': '-...', 'C': '-.-.', 'D': '-..', 'E': '.', 'F': '..-.', 'G': '--.', 'H': '....', 'I': '..', 'J': '.---', 'K': '-.-', 'L': '.-..', 'M': '--', 'N': '-.', 'O': '---', 'P': '.--.', 'Q': '--.-', 'R': '.-.', 'S': '...', 'T': '-', 'U': '..-', 'V': '...-', 'W': '.--', 'X': '-..-', 'Y': '-.--', 'Z': '--..', '1': '.----', '2': '..---', // 可以继续添加 }; const words = input.toUpperCase().split(' '); let output = ''; words.forEach(word => { let morseWord = ''; for (let char of word) { if (morseCodeTable[char]) { morseWord += morseCodeTable[char] + ' '; } } output += morseWord.trim() + ' '; }); return output.trim(); } // 示例使用 console.log(morseCodeTranslator("HELLO WORLD 123")); // 输出: .... . .-.. .-.. --- --- .--. ---. .---- ..--- ...-- ``` 在以上代码中,我们首先定义了一个包含莫尔斯码对照表的字典/数组,然后遍历输入字符串的每个字符,将其转换为对应的莫尔斯码,并保留了原字符串中的空格分隔。
推荐面试题