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

题目描述
给定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\n", 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])

原文地址:https://blog.51cto.com/13614527/2468775

时间: 2024-10-19 07:13:15

【华为机试练习】字串的连接最长路径查找的相关文章

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

这个题更应该叫做字符串字典序排序 题目描述 给定n个字符串,请对n个字符串按照字典序排列. 输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母. 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串. 示例1 输入 9 cap to cat card two too up boat boot 输出 boat boot cap card cat to too two up Java:傻子似的,重写Arrays.sor

字串的连接最长路径查找

题目描述 给定n个字符串,请对n个字符串按照字典序排列. 输入描述 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母. 输出描述 数据输出n行,输出结果为按照字典序排列的字符串. 输入样例 9 cap to cat card two too up boat boot 输出样例 boat boot cap card cat to too two up 测试代码 1 #include <stdio.h> 2 #include <

c++字串的连接最长路径查找

两种方式 一:直接排序就行了.对于字符串“>.<.==.+”这些运算符都被重载了,可以直接用. #include <iostream>using namespace std;#include <string> int main(){ int num; cin >> num; string s[1000], temp; for (int i = 0; i < num; i++) { cin >> s[i]; } for (int i = 0;

华为机试-公共字串计算

题目描述题目标题:计算两个字符串的最大公共字串的长度,字符不区分大小写详细描述:接口说明原型:int getCommonStrLength(char * pFirstStr, char * pSecondStr);输入参数: char * pFirstStr //第一个字符串 char * pSecondStr//第二个字符串 输入描述:输入两个字符串 输出描述:输出一个整数 输入例子:asdfas werasdfaswer 输出例子:6 效率低的Java程序实现: import java.ut

014-字串的连接最长路径查找

/* 014-字串的连接最长路径查找 题目描述 给定n个字符串,请对n个字符串按照字典序排列.  输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母. 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串. 输入例子: 9 cap to cat card two too up boat boot 输出例子: boat boot cap card cat to too two up */ //c语言版  #inclu

华为机试测试- 求有序数组中最长的等差序列

原题目是求一个无序数组中最长的等差数列. 求随机数构成的数组中找到长度大于=3 的最长的等差数列, 输出等差数列由小到大:如果没有符合条件的就输出格式:输入[1,3,0,5,-1,6]输出[-1,1,3,5] 思路: 1.排序 2.d的取值范围是[0,max-min],共有max-min+1种情况 3.对每一种情况进行查找 4.对于公差d,要求最长的等差序列,需要两个循环,一个外循环从头到尾遍历,内循环从外循环的起始遍历点开始利用公式 arr[i]=arr[start]+len*d,假如符合就长

2014华为机试西安地区B组试题

2014华为机试西安地区B组试题 题目一.亮着点灯的盏数 一条长廊里依次装有n(1≤n≤65535)盏电灯,从头到尾编号1.2.3.-n-1.n.每盏电灯由一个拉线开关控制.开始,电灯全部关着. 有n个学生从长廊穿过.第一个学生把号码凡是1的倍数的电灯的开关拉一下:接着第二个学生把号码凡是2的倍数的电灯的开关拉一下:接着第三个学生把号码凡是3的倍数的电灯的开关拉一下:如此继续下去,最后第n个学生把号码凡是n的倍数的电灯的开关拉一下.n个学生按此规定走完后,长廊里电灯有几盏亮着. 注:电灯数和学生

华为机试集锦(Java)

题目链接http://blog.csdn.net/hackbuteer1/article/details/11132567 1.字符串过滤 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉. 比如字符串“abacacde”过滤结果为“abcde”. 解决:hashset可以解决 2.字符串压缩 通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后

[华为机试真题]66.单词搜索

题目 代码 /*--------------------------------------- * 日期:2015-07-06 * 作者:SJF0115 * 题目:WordSearch * 来源:华为机试真题 -----------------------------------------*/ #include <iostream> #include <string> #include <vector> #include <stack> #include