您的位置:首页 > 其它

算法题--两种排序方法

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: