算法提高 9-3摩尔斯电码

来源:互联网 发布:apk生成php源码 编辑:程序博客网 时间:2024/04/30 22:21




  算法提高 9-3摩尔斯电码  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用' * '表示' . ',中间空格用' | '表示,只转化字符表。

  摩尔斯码定义见:http://baike.baidu.com/view/84585.htm?fromId=253988。

提示
  清橙进行评测时,输入是以EOF结尾的,而不是换行符。(EOF不是一个字符,“以EOF结尾”是一种通俗但不严谨的说法。)因此可以通过以下方式之一获取输入:

  1. 一次读入整行字符串,再进行后续解析。

  2. 使用getchar或scanf一次读入一个字符,通过它们的返回值判断输入结束。
样例输出
 我一开始在网上找资源,发现他们的太复杂了,其实只要熟练掌握String类与StringBuilder类就完全可以解决此题,废话不多说,代码如下

import java.util.Scanner;public class Main {public char Getchar(String A){char result = 0; if(A.equals("*-"))             result = 'a';     else if(A.equals("-***"))         result = 'b';     else if(A.equals("-*-*"))         result = 'c';     else if(A.equals("-**"))         result = 'd';     else if(A.equals("*"))         result = 'e';     else if(A.equals("**-*"))         result = 'f';     else if(A.equals("--*"))         result = 'g';     else if(A.equals("****"))         result = 'h';     else if(A.equals("**"))         result = 'i';     else if(A.equals("*---"))         result = 'j';     else if(A.equals("-*-"))         result = 'k';     else if(A.equals("*-**"))         result = 'l';     else if(A.equals("--"))         result = 'm';     else if(A.equals("-*"))         result = 'n';     else if(A.equals("---"))         result = 'o';     else if(A.equals("*--*"))         result = 'p';     else if(A.equals("--*-"))         result = 'q';     else if(A.equals("*-*"))         result = 'r';     else if(A.equals("***"))         result = 's';     else if(A.equals("-"))         result = 't';     else if(A.equals("**-"))         result = 'u';     else if(A.equals("***-"))         result = 'v';     else if(A.equals("*--"))         result = 'w';     else if(A.equals("-**-"))         result = 'x';     else if(A.equals("-*--"))         result = 'y';     else if(A.equals("--**"))         result = 'z';return result;}public void Getsentence(String ch){String str1;StringBuilder[] str = new StringBuilder[1000];int j=0,count = 0;str[j] = new StringBuilder();       for(int i=0;i<ch.length();i++){if(ch.charAt(i)=='|'){j++;str[j] = new StringBuilder();    //这一行比较重要,自己琢磨吧count=j;}else{String str2 = String.valueOf(ch.charAt(i));  //将char转换为string类str[j].append(str2);}}for(int k=0;k<=count;k++){str1 = str[k].toString();   //将Stringbuilder类转换为string类char temp = Getchar(str1);System.out.print(temp);}}public static void main(String[] args) {Main test = new Main();Scanner sc = new Scanner(System.in);String ch = sc.nextLine();test.Getsentence(ch);}}




  算法提高 9-3摩尔斯电码  
时间限制:1.0s   内存限制:256.0MB
    
问题描述
  摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用' * '表示' . ',中间空格用' | '表示,只转化字符表。

  摩尔斯码定义见:http://baike.baidu.com/view/84585.htm?fromId=253988。

提示
  清橙进行评测时,输入是以EOF结尾的,而不是换行符。(EOF不是一个字符,“以EOF结尾”是一种通俗但不严谨的说法。)因此可以通过以下方式之一获取输入:

  1. 一次读入整行字符串,再进行后续解析。

  2. 使用getchar或scanf一次读入一个字符,通过它们的返回值判断输入结束。
样例输出
0 0