zoukankan      html  css  js  c++  java
  • 算法笔记_085:蓝桥杯练习 9-3摩尔斯电码(Java)

    目录

    1 问题描述

    2 解决方案

     


    1 问题描述

    问题描述
      摩尔斯电码破译。类似于乔林教材第213页的例6.5,要求输入摩尔斯码,返回英文。请不要使用"zylib.h",只能使用标准库函数。用' * '表示' . ',中间空格用' | '表示,只转化字符表。

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

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

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

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

     


    2 解决方案

    具体代码如下:

    import java.util.ArrayList;
    import java.util.Scanner;
    
    public class Main {
        
        public 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 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 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) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            String A = in.nextLine();
            test.printResult(A);
        }
    }
  • 相关阅读:
    因素的随机选择,这里只是处理了 20 % 也是80 %
    随机函数完成。就是要的这个效果。
    poly 奇数偶数 隔点选择。 实时的 线 面的选择, 就是和max2011 石墨一样的办法,我只是没有用when 。
    在 poly中根据线段的长短,还有就是面积的选择
    终于找到bit 的资料了,我是poly 中看到的。
    常用脚本资料词汇
    转:Android源码分析
    Android内核的简单分析(转
    转:Android核心模块及相关技术介绍
    Google Earth 的几个标志性地方。
  • 原文地址:https://www.cnblogs.com/liuzhen1995/p/6563801.html
Copyright © 2011-2022 走看看