兩種排序方法

題目描述:

考拉有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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章