题目描述:

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

#include<iostream>
using namespace std;
#include<string>
#include<string.h>
#include<vector>

int main()
{
	int i = 0;
	int n = 0;
	string s;
	vector<string> v;
	//与要求不同的话就把值赋为0
	int flag1 = 1;//字典排序
	int flag2 = 1;//长度排序
	while (cin >> n){
		v.reserve(2*n);
		for (i = 0; i<n; i++){
			cin >> s;
			v.push_back(s);
		}
		for (i = 0; i<n-1; i++){
		//这里利用vector中的compare接口,如果返回值大于0说明前面的大
			if (v[i].compare(v[i + 1]) >0){
				flag1 = 0;
				break;
			}
		}
		for (i = 0; i < n - 1; ++i){

			if (v[i].size()>v[i + 1].size()){
				flag2 = 0;
				break;
			}
		}
		if (flag1 == 1 && flag2 == 0){
			cout << "lexicographically" << endl;
		}
		else if (flag1 == 1 && flag2 == 1){
			cout << "both" << endl;
		}
		else if (flag1 == 0 && flag2 == 1){
			cout << "lengths" << endl;
		}
		else if (flag1 == 0 && flag2 == 0)
		{
			cout << "none" << endl;
		}
		s.clear();
	}
	return 0;
}