• Java实现 蓝桥杯 算法提高 摩尔斯电码


    算法提高 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一次读入一个字符,通过它们的返回值判断输入结束。
    样例输出
    在这里插入图片描述

    import java.util.ArrayList;
    import java.util.Scanner;
    
    
    public class 摩尔斯电码 {
    	 public static char getOneChar(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 static String getOneString(char[] A, int start, int end) {
    	        StringBuilder result = new StringBuilder("");
    	        for(int i = start;i <= end;i++)
    	            result.append(A[i]);
    	        return result.toString();
    	    }
    	    
    	    public static void printResult(String A) {
    	        int len = A.length();
    	        if(len < 1)
    	            return;
    	        char[] arrayA = A.toCharArray();
    	        ArrayList<Character> list = new ArrayList<Character>();
    	        for(int i = 0;i < len;i++) {
    	            int start = i;
    	            int end = i;
    	            for(;end < len;end++) {
    	                if(arrayA[end] == '|')
    	                    break;
    	            }
    	            String tempA = getOneString(arrayA, start, end - 1);
    	            list.add(getOneChar(tempA));
    	            i = end;
    	        }
    	        //输出最终结果
    	        for(int i = 0;i < list.size();i++)
    	            System.out.print(list.get(i));
    	    }
    	    
    	    public static void main(String[] args) {
    	 
    	        Scanner in = new Scanner(System.in);
    	        String A = in.nextLine();
    	       printResult(A);
    	    }
    
    }
    
    
  • 相关阅读:
    Spring MVC程序中得到静态资源文件css,js,图片文件的路径问题总结
    【转】MySQL数据丢失讨论
    【摘】 pt-query-digest工具一解
    【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明
    【原】redis插件安装
    【摘】linux中fstab解说
    【原】mysql慢日志分析
    【原】带宽、流量单位换算关系
    【转】Linux查看内存大小和插槽
    【转】bind
  • 原文地址:https://www.cnblogs.com/a1439775520/p/13078842.html
Copyright © 2020-2023  润新知