当前位置: 面试刷题>> 独特的莫尔斯码 (经典算法题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")); // 输出: .... . .-.. .-.. --- --- .--. ---. .---- ..--- ...--
```
在以上代码中,我们首先定义了一个包含莫尔斯码对照表的字典/数组,然后遍历输入字符串的每个字符,将其转换为对应的莫尔斯码,并保留了原字符串中的空格分隔。