Fs.java
import java.util.Scanner;
import javax.swing.Box.Filler;
public class Fs {
static char [] chars = new char[30];
static String [] morse
= {".-",
"-...",
"-.-.",
"-..",
".",
"..-.",
"--.",
"....",
"..",
".---",
"-.-",
".-..",
"--",
"-.",
"---",
".--.",
"--.-",
".-.",
"...",
"-",
"..-",
"...-",
".--",
"-..-",
"-.--",
"--..",
"..--",
".-.-",
"---.",
"----"};
public static String morsed
= ""; public static String morsedInNumbers
= ""; public static String demorsedFinal
= "";
public static StringBuilder sb;
public static void main
(String[] args
) { fillChars();
Scanner sc
= new Scanner
(System.
in);
while (sc.hasNextLine()) {
sb = new StringBuilder();
morsed = "";
demorsedFinal = "";
morsedInNumbers = "";
input = sc.nextLine();
toMorse();
sb.append(morsedInNumbers);
sb.reverse();
morsedInNumbers = sb.toString();
demorse();
System.
out.
println(demorsedFinal
); }
}
public static void fillChars(){
for(int i = 0; i < 26; i++){
chars[i] = (char)(65 + i);
}
chars[26] = '_';
chars[27] = ',';
chars[28] = '.';
chars[29] = '?';
}
public static void toMorse(){
for(int i = 0; i < input.length(); i++){
int indexNumber;
if (input.charAt(i) >= 65) {
indexNumber = input.charAt(i) - 65;
if (indexNumber < 26) {
morsed = morsed + morse[indexNumber];
morsedInNumbers = morsedInNumbers + morse[indexNumber].length();
}
} else if (input.charAt(i) == '_') {
morsed = morsed + morse[26];morsedInNumbers = "";
morsedInNumbers = morsedInNumbers + morse[26].length();
} else if (input.charAt(i) == ',') {
morsed = morsed + morse[27];
morsedInNumbers = morsedInNumbers + morse[27].length();
} else if (input.charAt(i) == '.') {
morsed = morsed + morse[28];
morsedInNumbers = morsedInNumbers + morse[28].length();
} else {
morsed = morsed + morse[29];
morsedInNumbers = morsedInNumbers + morse[29].length();
}
}
}
public static char toChar
(String morseChar
){ for(int i = 0; i < 30; i++){
if(morseChar.equals(morse[i]))
return chars[i];
}
return 0;
}
public static void demorse(){
int inStart = 0;
for(int i = 0; i < morsedInNumbers.length(); i++){
int part
= Character.
getNumericValue(morsedInNumbers.
charAt(i
)); demorsedFinal += toChar(morsed.substring(inStart, inStart + part));
inStart += part;
}
}
}