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

【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.lryc.cn/news/39473.html

相关文章:

  • FinOps,从概念到落地 | UGeek大咖说第一期直播回顾(上)
  • k8s java程序实现kubernetes Controller Operator 使用CRD 学习总结
  • Unity笔记:修改代码执行的默认打开方式
  • Linux IPC:匿名管道 与 命名管道
  • 阿里研发工程师JAVA暑期实习一面
  • 第十四届蓝桥杯三月真题刷题训练——第 11 天
  • 机器学习入门——线性回归
  • Microsoft Word 远程代码执行漏洞(CVE-2023-21716)
  • Android kotlin 系列讲解(数据篇)SharedPreferences存储及测试
  • 一文了解Web Worker
  • 接口文档包含哪些内容?怎么才能写好接口文档?十年测试老司机来告诉你
  • java面试八股文之------Java并发夺命23问
  • CANoe中使用CAPL刷写流程详解(Trace图解)(CAN总线)
  • 【MySQL】002 -- 日志系统:一条SQL更新语句是如何执行的
  • C++---背包模型---数字组合(每日一道算法2023.3.14)
  • 并查集(不相交集)详解
  • 10个最频繁用于解释机器学习模型的 Python 库
  • final关键字:我偏不让你继承
  • 8大主流编程语言的适用领域,你可能选错了语言
  • 关于Python库的问题
  • 好记性不如烂笔头(2)
  • Java for循环嵌套for循环,你需要懂的代码性能优化技巧
  • 关于我拒绝了腾讯测试开发岗offer这件事
  • 从GPT到GPT-3:自然语言处理领域的prompt方法
  • Git代码提交规范
  • 【JavaScript速成之路】JavaScript内置对象--Math和Date对象
  • (自用POC)Fortinet-CVE-2022-40684
  • ConvNeXt V2实战:使用ConvNeXt V2实现图像分类任务(二)
  • 【人工智能与深度学习】基于正则化潜在可变能量的模型
  • 【Leetcode——排序的循环链表】