网易面试题 两种排序方法

来源:互联网 发布:淘宝好看的小白鞋 编辑:程序博客网 时间:2024/05/16 05:05
点击打开链接
时间限制:1秒 空间限制:32768K 热度指数:5120
 算法知识视频讲解

题目描述

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

输入描述:

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

输出描述:

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

输入

3aaabbb

输出

both

直接两两比较即可。
#include<iostream>#include<cmath>typedef long long LL;using namespace std;string s[105];int main(){int n;cin>>n>>s[0];int len=s[0].length();string t=s[0];int ok1=1; //是否字典序 int ok2=1; //是否长度递增 for(int i=1;i<n;i++){cin>>s[i];if(s[i]<t) ok1=0;t=s[i];if(s[i].length()<len) ok2=0;len=s[i].length();}if(ok1&&ok2) puts("both");else if(ok1&&!ok2) puts("lexicographically");else if(!ok1&&ok2) puts("lengths");else puts("none");return 0;}


原创粉丝点击