zoukankan      html  css  js  c++  java
  • 两种排序方法 网易2017内推编程题

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

    输入描述:

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

    输出描述:

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

    输入例子:

    3

    a

    aa

    bbb

    输出例子:

    both

     1 #include <iostream>
     2 #include <vector>
     3 #include <algorithm>
     4 #include <unordered_map>
     5 #include <string>
     6 using namespace std;
     7 
     8 int main()
     9 {
    10     int n;
    11     cin >> n;
    12 
    13     vector<pair<int, int> > vecLen;
    14     vector<pair<string, int> > vecLex;
    15     string str;
    16     int cnt = 0;
    17 
    18     //生成vecLen和vecLex
    19     for (int i = 0; i < n; i++)
    20     {
    21         cin >> str;
    22         vecLen.push_back(make_pair(str.size(), cnt));
    23         vecLex.push_back(make_pair(str, cnt));
    24         cnt++;
    25     }
    26 
    27     //按照vector[].first进行排序
    28     //如果字符串组是按照长度排序,vecLen排序后不变
    29     //如果字符串组是按照字母排序,vecLex排序后不变
    30     sort(vecLen.begin(), vecLen.end());
    31     sort(vecLex.begin(), vecLex.end());
    32 
    33     //判断vecLen和vecLex排序后顺序是否改变
    34     bool bLen = true;
    35     bool bLex = true;
    36     for (int i = 0; i < n; i++)
    37     {
    38         if (vecLen[i].second != i)
    39         {
    40             bLen = false;
    41             break;
    42         }
    43     }
    44     for (int i = 0; i < n; i++)
    45     {
    46         if (vecLex[i].second != i)
    47         {
    48             bLex = false;
    49             break;
    50         }
    51     }
    52 
    53     //输出结果  
    54     if (bLex && bLen)
    55         cout << "both" << endl;
    56     else if (bLex && !bLen)
    57         cout << "lexicographically" << endl;
    58     else if (!bLex && bLen)
    59         cout << "lengths" << endl;
    60     else
    61         cout << "none" << endl;
    62 }
  • 相关阅读:
    Win10关闭自动更新
    NGUI(三) 下拉框(弹出列表)PopupList、单选框Checkbox
    NGUI(二) widget,Anchor锚点,Tween补间动画,Slider滑动器,滑动条变色,打字机TypewriterEffect
    NGUI(一) UIROOT,Label,Sprite,Button,Panel,创建字体,创建图集,按钮添加点击音效
    NGUI脚本
    c#常用类库
    Application位置
    常用单词
    Proto在C++的使用
    Protobuf语法
  • 原文地址:https://www.cnblogs.com/hslzju/p/5748954.html
Copyright © 2011-2022 走看看