题解 | #两种排序方法#

两种排序方法

https://www.nowcoder.com/practice/839f681bf36c486fbcc5fcb977ffe432

思路:定义两个标志位lexicographically、lengths记录是否满足这两种情况

只需保存两个字符串遍变量,一个prev_str字符串,一个当前cur_str字符串,判断是否满足这两个条件

1.当lengths 成立时才有必要判断字符串长度

2.当lexicographically成立时才有必要判断字典排序

3.当两个标志位都不成立,终止判断直接输出

#include <iostream>
using namespace std;

int main() {
    int n;
    cin >> n;
    string prev_str("");
    int prev_len = 0;
    bool lexicographically = true;
    bool lengths = true;
    for(int i = 1;i<=n && (lexicographically || lengths);i++)
    {
        string cur_string;
        cin >> cur_string;
        int cur_len = cur_string.size();
        if(lengths)
        {
            if(cur_len < prev_len)
            {
                lengths = false;
            }
        }
        if(lexicographically)
        {
            if(cur_string < prev_str)
            {
                lexicographically = false;
            }
        }
        prev_len = cur_len;
        prev_str = cur_string;
    }
    if(lengths && lexicographically)
    {
        cout << "both" << endl;
    }
    else if(lengths)
    {
        cout << "lengths" << endl;
    }
    else if(lexicographically)
    {
        cout << "lexicographically" << endl;
    }
    else
    {
        cout << "none" << endl;
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
1 收藏 评论
分享
牛客网
牛客企业服务