华为机试练习字串的连接最长路径查找

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了华为机试练习字串的连接最长路径查找相关的知识,希望对你有一定的参考价值。

题目描述
给定n个字符串,请对n个字符串按照字典序排列。
输入描述:
输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母。
输出描述:
数据输出n行,输出结果为按照字典序排列的字符串。


解法1(C语言):

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int Partition(char *A[], int low, int high)
{
    char *pivot = (char *)malloc(100 * sizeof(char));
    pivot = A[low];
    while(low < high)
    {
        while(low < high && strcmp(A[high],pivot) >= 0)
            --high;
        A[low] = A[high];
        while(low < high && strcmp(A[low],pivot) <= 0)
            ++low;
        A[high] = A[low];
    }
    A[low] = pivot;
    return low;
}

void QuickSort(char *A[], int low, int high)
{
    if(low < high)
    {
        int pivotpos = Partition(A, low, high);
        QuickSort(A, low, pivotpos - 1);
        QuickSort(A, pivotpos + 1, high);
    }
}

int main()
{
    int n, i;
    char *str[1000];
    scanf("%d", &n);
    for(i = 0; i < n; ++i)
    {
        str[i] = (char*) malloc(100*sizeof(char));
        scanf("%s", str[i]);
    }
    QuickSort(str, 0, n - 1);
    for(i = 0; i < n; ++i)
        printf("%s
", str[i]);
    return 0;
}

解法2(Python):

n = int(input())
lst = []
for i in range(n):
    s = input()
    lst.append(s)
lst.sort()
for i in range(n):
    print(lst[i])

以上是关于华为机试练习字串的连接最长路径查找的主要内容,如果未能解决你的问题,请参考以下文章

华为python机试题目:整数与IP地址间的转换图片整理字串的连接最长路径查找提取不重复的整数字符串合并处理字符串最后一个单词的长度删除字符串中出现次数最少的字符

字串的连接最长路径查找

华为机试练习代码

华为机试-公共字串计算

华为OD机试 - 最长连续子串(Python)| 真题+思路+考点+代码+岗位

华为机试HJ65:查找两个字符串a,b中的最长公共子串