算法题--两种排序方法
2017-09-17 12:51
183 查看
题目描述
考拉有n个字符串字符串,任意两个字符串长度都是不同的。考拉最近学习到有两种字符串的排序方法: 1.根据字符串的字典序排序。例如:"car" < "carriage" < "cats" < "doggies < "koala"
2.根据字符串的长度排序。例如:
"car" < "cats" < "koala" < "doggies" < "carriage"
考拉想知道自己的这些字符串排列顺序是否满足这两种排序方法,考拉要忙着吃树叶,所以需要你来帮忙验证。
<?php $handler = fopen('php://stdin','r'); $n = fgets($handler); for ($i=0;$i<$n;$i++){ $arr[$i] = trim(fgets($handler)); } $res1 = my_compare($arr,$n); $res2 = my_length($arr,$n); if ($res1 && $res2) { echo 'both'; } else if ($res1) { echo 'lexicographically'; } else if ($res2) { echo 'lengths'; } else { echo 'none'; } function my_compare($arr,$n) { for ($i=0;$i<$n-1;$i++) { $len1 = strlen($arr[$i]); $len2 = strlen($arr[$i+1]); $flag = false; for ($j=0;$j<min($len1,$len2);$j++) { if(ord($arr[$i][$j]) > ord($arr[$i+1][$j])) { return false; } else if (ord($arr[$i][$j]) == ord($arr[$i+1][$j])) { $flag = true; } else { $flag = false; break 1; } } if ($flag) { if ($len1>$len2) { return false; } } } return true; } function my_length($arr,$n) { for ($i=0;$i<$n-1;$i++) { if(strlen($arr[$i])>strlen($arr[$i+1])) { return false; } } return true; }
相关文章推荐
- 数组排序问题的两种方法:插入排序算法和递归(分治)算法
- 快速排序的两种改进方法算法及topK问题求解
- python list排序的两种方法及实例讲解
- 用Java集合中的Collections.sort方法对list排序的两种方法
- 网易两种排序方法
- 用Java集合中的Collections.sort方法如何对list排序(两种方法)
- Collections.sort对List排序的两种方法
- Java Array.sort()两种重载的排序方法
- vb.net 2010下求最大值、最小值及两种排序方法
- 黑马程序员-----JAVA基础--数组排序的两种算法
- 选择排序的两种实现方法
- 算法系列(三)插入排序的两种改进:规避边界检测和取消交换(Java实现)
- 用Java集合中的Collections.sort方法对list排序的两种方法
- [算法] 排序方法复杂度、稳定性汇总
- Collections.sort对List排序的两种方法
- Linq 排序的两种方法(ASP.net)
- Java中对List集合排序的两种方法
- 两种排序方法的效率比较
- C语言经典算法(二)——求最小公倍数的两种方法
- 排序字符串数组函数(两种方法)