首页 > 编程语言 >CF 32B博尔兹(Java实现)

CF 32B博尔兹(Java实现)

时间:2024-12-04 21:29:58浏览次数:5  
标签:32B Java String 博尔兹 input sc new public Scanner

题目分析:

        就是三种情况的摩斯密码解密,分别有组合:“.”、“-.”、“--”。由此可见“.”不能作为两位值的开头

思路分析:

        输入:整行输入再转为字符数组

        数据处理:从首位到倒数第二位遍历,根据三种情况存入对应值给答案集合

代码:

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc =new Scanner(System.in);
		ArrayList<Integer> re=new ArrayList<>();//答案集合
		String input=sc.nextLine();
		char[] arr=input.toCharArray();//存值

		for (int i=0;i<arr.length-1;i++){//遍历确认情况
			 if (arr[i]=='.'&&(arr[i+1]=='-'||arr[i+1]=='.')){//情况一
				re.add(0);//存值0

			} else if (arr[i]=='-'&&arr[i+1]=='.') {//情况二
				re.add(1);//存值1
				 arr[i+1]= ' ';//并清除后一位,避免重复操作
			}else if (arr[i]=='-'&&arr[i+1]=='-') {//情况三
				re.add(2);//存值2
				 arr[i+1]= ' ';//并清除后一位,避免重复操作
			}
		}
		if (arr[arr.length-1]=='.'){//这个时候会出现一个特殊情况,如果倒数第二位没有被清除,那就会执行上述判断中的情况二,不会执行这一步,如果倒数第二位被清除,而最后一位是“.”时,只能说明这是情况一,但是由于遍历时的数组设置不会执行到这一位,所以手动add0
			re.add(0);
		}
		for (int temp:re) {//遍历输出
			System.out.print(temp);
		}
	}
}

感谢您能够看到这里,一起见证小何同学的算法学习,如果您有不同的见解,希望能得到您的指点和点悟;如果您是和我一样的同学,也希望这篇文章能对您有所帮助。

标签:32B,Java,String,博尔兹,input,sc,new,public,Scanner
From: https://blog.csdn.net/Dr_Si/article/details/144250358

相关文章

  • java中面向过程和面向对象区别?
    重要信息官网:https://ais.cn/u/vEbMBz......
  • JavaSwing JTextField
    try{BeautyEyeLNFHelper.frameBorderStyle=BeautyEyeLNFHelper.FrameBorderStyle.osLookAndFeelDecorated;//UIManager.put("RootPane.setupButtonVisible",false);org.jb2011.lnf.beautyeye.BeautyEyeLNFHelpe......
  • web前端期末大作业:基于HTML+CSS+JavaScript制作我的音乐网站(带设计报告)
    ......
  • 5分钟搞懂JMM:10倍优化Java并发性能!
    引言在现代软件开发中,多线程并发编程已成为提高程序性能和资源利用率的关键技术。Java作为一种广泛使用的编程语言,提供了丰富的并发编程工具和框架。然而,要编写正确、高效且线程安全的并发程序,深入理解Java内存模型(JMM)是必不可少的。Java内存模型(JMM)是Java并发编程的核心......
  • JavaSwing JLabel
    JLabellabel=newJLabel();//设置标签文本label.setText("标签组件");//设置文本水平居中label.setHorizontalTextPosition(SwingConstants.CENTER);//设置文本上下居中label.setVerticalTextPosition(SwingConstants......
  • Java 中几种常用的数据库访问技术
    摘要: 本文深入探讨了Java中几种常用的数据库访问技术,包括JDBC、Hibernate、MyBatis等。详细阐述了每种技术的基本原理、核心组件、使用方法,并通过丰富的示例代码展示了它们在实际应用中的数据库交互操作。通过对这些技术的学习,读者能够全面了解Java与数据库交互的多种途......
  • Java基础——网络编程
    一、网络基础网络通信:网络通信的概念:两台设备之间通过网络实现数据传输网络通信:将数据通过网络从一台设备传输到另一台设备java.net包下提供了一系列的类和接口,供程序员使用,完成网络通信网络:概念:两台或多台设备通过一定的物理设备连接起来构成了网络根据网络的覆盖范......
  • JavaWeb:会话_过滤器_监听器
    该笔记根据尚硅谷的JavaWeb课程进行整理 一、会话(1)会话管理概述1.1.1为什么需要会话管理HTTP是无状态协议举例:张三去一家饭馆点了几道菜,觉得味道不错,第二天又去了,对老板说,还点上次的那几道菜无状态:老板没有记录张三是否来过,更没有记录他上次点了哪些菜,张三只能重新......
  • 11.Java 集合(ArrayList、Vector、LinkedList、HashSet、LinkedHashSet、TreeSet、Hash
    一、集合概述1、数组的缺点长度开始时必须指定,且一旦指定,不能更改保存的元素必须为同类型对数组数组元素进行增删较为麻烦2、集合的好处可以动态保存多个任意类型提供了一系列方便操作对象的元素3、集合体系Collection接口:单列集合Map接口:双列集合二......
  • 深入解析Java线程源码:从基础到并发控制的全面指南(一)
    一:Java线程基础和源码解析packagejava.lang;importjava.lang.ref.Reference;importjava.lang.ref.ReferenceQueue;importjava.lang.ref.WeakReference;importjava.security.AccessController;importjava.security.AccessControlContext;importjava.security.Pr......