ch1_6_1求解两种排序方法问题
考拉有n个字符串字符串,任意两个字符串长度都是不同的。
考拉最近学习到有两种字符串的排序方法:
1.根据字符串的字典序排序。例如:
"car" < "carriage" < "cats" < "doggies < "koala"
2.根据字符串的长度排序。例如:
"car" < "cats" < "koala" < "doggies" < "carriage"
考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,
所以需要你来帮忙验证。
输入描述:
输入第一行为字符串个数n(n ≤ 100) 接下来的n行,
每行一个字符串,字符串长度均小于100,均由小写字母组成
输出描述:
如果这些字符串是根据字典序排列而不是根据长度排列
输出"islexicalorder",
如果根据长度排列而不是字典序排列
输出"lengths",
如果两种方式都符合输出"both",
否则输出"none"
输入例子:
3
a
aa
bbb
输出例子:
both
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
public class ch1_6_1求解两种排序方法问题 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner in=new Scanner(System.in);
int n=in.nextInt();
String s[]=new String[n];
for(int i=0;i<n;i++) {
s[i]=in.next();
}
boolean so1=cmp(s,sd(s));
boolean so2=cmp(s,sl(s));
if(so1&&so2)
System.out.println("both");
else if(so1)
System.out.println("islexicalorder");
else if(so2)
System.out.println("lengths");
else System.out.println("none");
}
private static String [] sl(String[] s) {
Arrays.sort(s,0,s.length,new Comparator<String>(){
public int compare(String a,String b){
return a.length()-b.length();
}});
return s;
}
private static boolean cmp(String[] s, String sd[]) {
// TODO Auto-generated method stub
for(int i=0;i<s.length;i++)
if(s[i].equals(sd[i])==false)
return false;
return true;
}
private static String [] sd(String[] s) {
// TODO Auto-generated method stub
Arrays.sort(s);
return s;
}
}
ch1_6_1求解两种排序方法问题的更多相关文章
- python 两种排序方法 sort() sorted()
python中有两种排序方法,list内置sort()方法或者python内置的全局sorted()方法 区别为: sort()方法对list排序会修改list本身,不会返回新list.sort()只 ...
- CList 点击表头排序 (2)两种排序方法中其中一种
上一篇讲解SortItem()方法如何使用,虽然都是抄别人的但是就是想让大家有个大概的了解 CList 点击表头排序 (1)SortItems函数 点击表头排序基本思路都是 1.首先响应HDN_ITE ...
- JavaScript中数组的两种排序方法详解(冒泡排序和选择排序)
一.冒泡排序的原理(从小到大) 相邻两个数进行比较,如果前一个数大于后一个数,那么就交换,否则不交换 原理剖析 比如有一组含有6个数字的数:5.3.7.2.1.6一共6个数字,做5次循环,每次循环相邻 ...
- CList 点击表头排序 (3)两种排序的第二种
在头两篇中介绍了CListCtrl::SortItems() 方法的使用和其中的一个排序方法,这篇介绍另一种方法 CList 点击表头排序 (1)SortItems函数 CList 点击表头排序 (2 ...
- java List递归排序,传统方式和java8 Stream优化递归,无序的列表按照父级关系进行排序(两种排序类型)
当有一个List列表是无序的,List中的数据有parentid进行关联,通过java排序成两种排序类型: 所用的测试列表最顶级无parentid,若为特殊值,修改下判断方法即可. 第一种排序:按照树 ...
- 两种js方法发起微信支付:WeixinJSBridge,wx.chooseWXPay区别
原文链接:https://www.2cto.com/weixin/201507/412752.html 1.为什么会有两种JS方法可以发起微信支付? 当你登陆微信公众号之后,左边有两个菜单栏,一个是微 ...
- TreeSet的两种实现方法:Comparable和Comparator(Java比较器)
Comparable与Comparator实际上是TreeSet集合的两种实现方式,用来实现对象的排序.下边介绍一下两种比较器的使用方法和区别. Comparable称为元素的自然顺序,或者叫做默认顺 ...
- angular2系列教程(十)两种启动方法、两个路由服务、引用类型和单例模式的妙用
今天我们要讲的是ng2的路由系统. 例子
- git两种合并方法 比较merge和rebase
18:01 2015/11/18git两种合并方法 比较merge和rebase其实很简单,就是合并后每个commit提交的id记录的顺序而已注意:重要的是如果公司用了grrit,grrit不允许用m ...
随机推荐
- .NET并发编程-数据结构不可变性
本系列学习在.NET中的并发并行编程模式,实战技巧 内容目录 .NET不可变集合.NET并发集合函数式数据结构设计一个不可变类 作为程序员经常遇到产品上线后出现各种莫名其妙的问题,在我本地是好好的啊, ...
- 深入理解gradle中的task
目录 简介 定义task tasks 集合类 Task 之间的依赖 定义task之间的顺序 给task一些描述 task的条件执行 task rule Finalizer tasks 总结 深入理解g ...
- JavaScript 注释规范
JavaScript 注释规范 总原则 As short as possible(如无必要,勿增注释).尽量提高代码本身的清晰性.可读性. As long as necessary(如有必要,尽量详尽 ...
- DB-Engines Ranking : Redis, MongoDB, MySQL
DB-Engines Ranking http://db-engines.com/en/ranking The DB-Engines Ranking ranks database management ...
- Linux directory tree
Linux directory tree https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard https://en.wikipedi ...
- codepen iframe theme id
codepen iframe theme id iframe css theme demos See the Pen css margin collapsing (1. 相邻兄弟元素) by xgqf ...
- Android Studio & SDK & JDK & setting path
Android Studio & SDK & JDK & setting path https://developer.android.com/studio/intro/upd ...
- vs code & macOS services
vs code & macOS services Mac OS X, Open Folder With VS Code (right click) https://github.com/Mic ...
- ng mock服务器数据
angualr文档 in-memory-web-api 文档 安装 yarn add angular-in-memory-web-api -S src/app/app.module.ts import ...
- 冷饭新炒:理解JWT的实现原理和基本使用
前提 这是<冷饭新炒>系列的第五篇文章. 本文会翻炒一个用以产生访问令牌的开源标准JWT,介绍JWT的规范.底层实现原理.基本使用和应用场景. JWT规范 很可惜维基百科上没有搜索到JWT ...