当前位置: 首页 > article >正文

【Java版oj】day08两种排序方法、最小公倍数

目录

一、两种排序方法

(1)原题再现

(2)问题分析

(3)完整代码

 二、最小公倍数

(1)原题再现

(2)问题分析

(3)完整代码


一、两种排序方法

(1)原题再现

两种排序方法__牛客网

        考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法:

        1.根据字符串的字典序排序。例如:
"car" < "carriage" < "cats" < "doggies < "koala"
        2.根据字符串的长度排序。例如:
"car" < "cats" < "koala" < "doggies" < "carriage"
        考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你来帮忙验证。

输入描述:

        输入第一行为字符串个数n(n ≤ 100) 接下来的n行,每行一个字符串,字符串长度均小于100,均由小写字母组成

输出描述:

        如果这些字符串是根据字典序排列而不是根据长度排列输出"lexicographically", 如果根据长度排列而不是字典序排列输出"lengths", 如果两种方式都符合输出"both",否则输出"none"

(2)问题分析

        本题在我看来是对字符串String类型的考察,直接使用String的相关方法做是最简单的,当中需要注意的是在String类中有一个compareTo方法,内部设置直接就是按照字典序设定的。strA.compareTo(strB);返回得到一个int类型。如果字符串strA按照字典序排在字符串strB的前面,就会得到一个小于0的数;反之,如果字符串strA按照字典序排在字符串strB的后面,就会得到一个大于0的数两个字符串相等,就会得到0。如果知道这个方法,题目就会很好做,不然就得对字符串里的每一个字符逐一比较,很有可能会遗漏一些情况。

        关于String的更多相关知识指路:

Java基础之神奇String类(一)_小熊爱吃软糖吖的博客-CSDN博客

Java基础之神奇String类(二)_小熊爱吃软糖吖的博客-CSDN博客

(3)完整代码

import java.util.*;
public class Main{

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		Scanner sc=new Scanner(System.in);
		int n=sc.nextInt();
		String [] str=new String[n];
		for(int i=0;i<n;i++) {
			String s=sc.next();
			str[i]=s;
		}
		if(len(str)&&!lex(str)) {
			System.out.println("lengths");
			
		}else if(lex(str)&&!len(str)) {
			
			System.out.println("lexicographically");
		}else if(lex(str)&&len(str)) {
			
			System.out.println("both");
		}else {
			
			System.out.println("none");
		}				
	}
		
	public static boolean len(String [] str) {
		for(int i=1;i<str.length;i++) {
			if(str[i-1].length()>=str[i].length()){
				return false;
			}
		}
		return true;
	}
	public static boolean lex(String [] str) {
		for(int i=1;i<str.length;i++) {
			if(str[i-1].compareTo(str[i])>0) {
				return false;
			}
		}
		return true;	
	}		
}

 二、最小公倍数

(1)原题再现

求最小公倍数__牛客网

        正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。

(2)问题分析

        这道题很常见,最容易想到的方式是暴力求解,利用一个for循环,从1一直到a*b,直到找出最小的公倍数。在我看来,记住公式是最快捷的方法,两个数的乘积=最大公约数*最小公倍数求解最大公约数可以用辗转相除法:两数中较大的数(max)为除数,较小的数(min)为被除数,当max%min!=0时,将min赋值给max,max除以min的余数赋值给min,直至==0时,较小的数(min)就是最大公约数。得到最大公约数就可以很容易求解最小公倍数了。

(3)完整代码

import java.util.*;
public class Main {
	public static void main(String[] args) {
		Scanner sc=new Scanner(System.in);
		int a=sc.nextInt();
		int b=sc.nextInt();
		int LCD=a*b/GCD(a,b);
		System.out.println(LCD);
		
	}
	public static int GCD(int a,int b) {//最大公约数
		int x=Math.min(a, b);
		int y=Math.max(a, b);
		while(y%x!=0) {
			int rel=y%x;
			y=x;
			x=rel;
		}
		return x;
	}
}



http://www.kler.cn/a/164.html

相关文章:

  • H5通过URL Scheme唤醒手机地图APP
  • Sprint Boot教程之五十:Spring Boot JpaRepository 示例
  • 【传统枪机现代枪机的功能需求】
  • 云安全博客阅读(三)
  • Ubuntu 下载安装 kibana8.7.1
  • 《Opencv》信用卡信息识别项目
  • 11.落地:微服务架构灰度发布方案
  • Android 架构之长连接技术
  • 写给20、21级学生的话
  • chatgpt这么火?前端如何实现类似chatgpt的对话页面
  • CANoe-Start Values窗口是做什么的
  • JavaScript的事件传播机制
  • 【Docker】Docker安装Jenkins一键自动化部署SpringBoot项目使用详解
  • 总结:电容在电路35个基本常识
  • 【Python】控制自己的手机拍照,并自动发送到邮箱
  • YOLOv7、YOLOv5改进之打印热力图可视化:适用于自定义模型,丰富实验数据
  • ChatGPT研究分享:机器第一次开始理解人类世界
  • 博客系统(界面设计)
  • Windows server——部署DNS服务(3)
  • 2022年全国职业院校技能大赛(中职组)网络安全竞赛试题A模块第三套解析教程(详细)
  • SpringBean管理
  • class03:MVVM模型与响应式原理
  • 前端开发神器VS Code安装教程
  • 【蓝桥杯】第十四届蓝桥杯模拟赛(第三期)C++ (弱go的记录,有问题的话求指点)
  • 中科亿海微FPGA
  • 【网络】http协议