目录

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);
}
}

算法笔记_085:蓝桥杯练习 9-3摩尔斯电码(Java)的更多相关文章

  1. 算法笔记_091:蓝桥杯练习 递推求值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 已知递推公式: F(n, 1)=F(n-1, 2) + 2F(n-3, 1) + 5, F(n, 2)=F(n-1, 1) + 3F(n- ...

  2. 算法笔记_056:蓝桥杯练习 未名湖边的烦恼(Java)

    目录 1 问题描述 2 解决方案 2.1 递归法 2.2 递推法   1 问题描述 问题描述 每年冬天,北大未名湖上都是滑冰的好地方.北大体育组准备了许多冰鞋,可是人太多了,每天下午收工后,常常一双冰 ...

  3. 算法笔记_055:蓝桥杯练习 Tricky and Clever Password (Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 在年轻的时候,我们故事中的英雄——国王 Copa——他的私人数据并不是完全安全地隐蔽.对他来说是,这不可接受的.因此,他发明了一种密码,好 ...

  4. 算法笔记_119:蓝桥杯第六届省赛(Java语言A组)试题解答

     目录 1 熊怪吃核桃 2 星系炸弹 3 九数分三组 4 循环节长度 5 打印菱形 6 加法变乘法 7 牌型种数 8 移动距离 9 垒骰子 10 灾后重建   前言:以下试题解答代码部分仅供参考,若有 ...

  5. 算法笔记_120:蓝桥杯第六届省赛(Java语言B组部分习题)试题解答

     目录 1 三角形面积 2 立方变自身 3 三羊献瑞 4 九数组分数 5 饮料换购 6 生命之树   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 三角形面积 三角形 ...

  6. 算法笔记_121:蓝桥杯第六届省赛(Java语言C组部分习题)试题解答

     目录 1 隔行变色 2 立方尾不变 3 无穷分数 4 格子中输出 5 奇妙的数字 6 打印大X   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路过的同学提醒一下~ 1 隔行变色 隔行变色 ...

  7. 算法笔记_122:蓝桥杯第七届省赛(Java语言A组)试题解答

     目录 1 煤球数目 2 生日蜡烛 3 搭积木 4 分小组 5 抽签 6 寒假作业 7 剪邮票 8 取球博弈 9 交换瓶子 10 压缩变换   前言:以下试题解答代码部分仅供参考,若有不当之处,还请路 ...

  8. 算法笔记_092:蓝桥杯练习 c++_ch04_02_修正版(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 [题目描述] 实现一个时间类Time.将小时,分钟和秒存储为int型成员变量.要求该类中包含一个构造函数,访问用的函数,一个推进当前时间的函数adv ...

  9. 算法笔记_089:蓝桥杯练习 7-2求arccos值(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 问题描述 利用标准库中的cos(x)和fabs(x)函数实现arccos(x)函数,x取值范围是[-1, 1],返回值为[0, PI].要求结果准确 ...

随机推荐

  1. window10 Powershell使用curl命令报错解决方法

    报错信息:curl : 无法分析响应内容,因为 Internet Explorer 引擎不可用,或者 Internet Explorer 的首次启动配置不完整.请指定 UseBasicParsing ...

  2. Eclipse控制台

    Eclipse中的控制台,是以卡片布局方式来管理的.每运行一个新的程序,创建一个新的控制台,覆盖到原来的控制台之上. 控制台的控制按钮有10个,仅对其中部分作介绍 第1个按钮结束当前程序的运行 第2个 ...

  3. Why Did the Cow Cross the Road III(树状数组)

    Why Did the Cow Cross the Road III 时间限制: 1 Sec  内存限制: 128 MB提交: 65  解决: 28[提交][状态][讨论版] 题目描述 The lay ...

  4. Unity做360度的全景照片

    这里推荐两种方法,第一种是用鼠标滑动,第二种是用手机的陀螺仪进行全景查看 第一种: 1.新建一Sphere,然后为其赋予材质,注意材质的Shader类型为:Mobile/particles/Alpha ...

  5. Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE

    Arduino可穿戴开发入门教程Windows平台下安装Arduino IDE Windows平台下安装Arduino IDE Windows操作系统下可以使用安装向导和压缩包形式安装.下面详细讲解这 ...

  6. Redux 洋葱模型理解

    下面的代码会输出: A middleware1 开始C middleware2 开始E middleware3 开始======= G =======F middleware3 结束D middlew ...

  7. BZOJ 4939 [Ynoi2016]掉进兔子洞(莫队+bitset)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=4939 [题目大意] 给出一个数列,每个询问给出三个区间,问除去三个区间共有的数字外, ...

  8. [UOJ336]无限之环

    题目的要求就是每个接头都有且仅有一个与其相连的接头,所以不妨给每个接头$1$的流量,对整个网格图黑白染色后(源点$\mathop\rightarrow\limits^\infty$黑点,白点$\mat ...

  9. FZU 2036 Log Calculator

    思路:数学题! 给定a,b,求s=log2(2a+2b);转化为s=b+log2(2a-b+1),(a>b). 测试可以知道,当x>=32时,在精度范围内log2(2x+1)=x.否则将a ...

  10. struts2和spring整合错误 org.springframework.beans.factory.BeanCreationException,已解决

    先贴上错误 2018-8-16 23:41:10 org.springframework.context.support.ClassPathXmlApplicationContext prepareR ...