问题描述
摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用’ * ‘表示’ . ‘,中间空格用’ | '表示,只转化字符表。
摩尔斯码定义见:http://baike.baidu.com/view/84585.htm?fromId=253988。
提示
清橙进行评测时,输入是以EOF结尾的,而不是换行符。(EOF不是一个字符,“以EOF结尾”是一种通俗但不严谨的说法。)因此可以通过以下方式之一获取输入:
1. 一次读入整行字符串,再进行后续解析。
2. 使用getchar或scanf一次读入一个字符,通过它们的返回值判断输入结束。
样例输出
代码:
import java.util.Scanner;
public class Test {
public static char hanshu(String s) {
char[] arr = s.toCharArray();
if (arr.length == 1) {
if (arr[0] == '*') {
return 'e';
} else {
return 't';
}
} else if (arr.length == 2) {
switch (arr[0]) {
case '*':
if (arr[1] == '*') {
return 'i';
} else {
return 'a';
}
case '-':
if (arr[1] == '*') {
return 'n';
} else {
return 'm';
}
}
} else if (arr.length == 3) {
switch (arr[0]) {
case '*'://*
switch (arr[1]) {
case '*'://**
if (arr[2] == '*') {
return 's';//***
} else {
return 'u';
}
case '-'://*-
if (arr[2] == '*') {
return 'r';
} else {
return 'w';
}
}
case '-'://-
switch (arr[1]) {
case '*'://-*
if (arr[2] == '*') {
return 'd';//-**
} else {
return 'k';
}
case '-'://--
if (arr[2] == '*') {
return 'g';
} else {
return 'o';
}
}
}
} else if (arr.length == 4) {
if (arr[0] == '*') {//*
if (arr[1] == '*') {//**
if (arr[2] == '*') {//***
if (arr[3] == '*') {//****
return 'h';
} else {
return 'v';//***-
}
} else {//**-
return 'f';
}
} else {//*-
if (arr[2] == '*') {//*-*
return 'l';
} else {//*--
if (arr[3] == '*') {
return 'p';
} else {
return 'j';
}
}
}
} else {//-
if (arr[1] == '*') {//-*
if (arr[2] == '*') {//-**
if (arr[3] == '*') {//-***
return 'b';//-***
} else {
return 'x';
}
}else {//-*-
if (arr[3] == '*'){
return 'c';
}else {
return 'y';
}
}
} else {//--
if (arr[2] == '*') {//--*
if (arr[3] == '*') {//--**
return 'z';
} else {
return 'q';
}
}
}
}
} else {//-
if (arr[1] == '*') {
if (arr[2] == '*') {//-**
return 'x';
}
} else {
if (arr[2] == '*') {//-*
if (arr[4] == '*') {
return 'c';
}
}
}
}
return 'y';
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
String[] arr = s.split("\\|");
for (int i = 0;i<arr.length;i++){
System.out.print(hanshu(arr[i]));
}
}
}