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

这个题更应该叫做字符串字典序排序

题目描述

给定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.sort()中的Comparator。时间消耗为48ms,空间消耗9492K,消耗同下。

 1 import java.util.Arrays;
 2 import java.util.Comparator;
 3 import java.util.Scanner;
 4
 5 public class Main {
 6
 7     public static void main(String[] args) {
 8         Scanner sc=new Scanner(System.in);
 9         while(sc.hasNext()){
10             int num = sc.nextInt();
11             sc.nextLine();
12             String[] s = new String[num];
13             for(int i = 0; i < num; i++){
14                 s[i] = sc.nextLine();
15             }
16             Arrays.sort(s, new Comparator<String>(){
17
18                 @Override
19                 public int compare(String o1, String o2) {
20                     for(int i = 0; (i < o1.length() && i < o2.length()); i++){
21                         char ch1 = o1.charAt(i);
22                         char ch2 = o2.charAt(i);
23                         if(ch1>ch2){
24                             return 1;
25                         }
26                         else if(ch1 < ch2){
27                             return -1;
28                         }
29                     }
30                     if(o1.length() > o2.length()){
31                         return 1;
32                     }
33                     else{
34                         return -1;
35                     }
36                 }
37
38             });
39
40             for(int i=0; i<s.length;i++){
41                 System.out.println(s[i]);
42             }
43         }
44         sc.close();
45     }
46
47 }

Java:直接用sort

 1 import java.util.Arrays;
 2 import java.util.Scanner;
 3
 4 public class Main {
 5
 6     public static void main(String[] args) {
 7         Scanner sc=new Scanner(System.in);
 8         while(sc.hasNext()){
 9             int num = sc.nextInt();
10             sc.nextLine();
11             String[] s = new String[num];
12             for(int i = 0; i < num; i++){
13                 s[i] = sc.nextLine();
14             }
15             Arrays.sort(s);
16
17             for(int i=0; i<s.length;i++){
18                 System.out.println(s[i]);
19             }
20         }
21         sc.close();
22     }
23
24 }
时间: 2024-12-09 14:42:12

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

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

题目描述给定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

字串的连接最长路径查找

题目描述 给定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;

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

华为机试-公共字串计算

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

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

华为机试正式版(西安c/c++/java),今天下午去机试的题目,新鲜出炉了!

以下题目都是回忆的,题目都很简单, 大家有些基础就可以参加!(语言可以是c/c++,也可以是java的) 题目一(60分): 字符串操作, 将小写转换成大写, 将大写转化为小写, 数字的不做转换 例如, 输入:aBcD12 输出:AbCd12 题目二(100分): 将输入的字符串按照规定重新排序,如果字符串长度为奇数, 则中间的字符保持不变, 中间字符左侧降序排列, 右侧字符按照升序排列, 如果字符串长度为偶数,则左半侧字符降序排列,右半侧字符则按照升序排列 例如, 输入:ab5de 输出:ba