字串的连接最长路径查找
题目描述
给定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
给出如何比较字符串的基本算法,当然可以用java中的Arrays.sort()或者C++中的sort();
import java.util.*;
public class StringSort {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
int n;
while(sc.hasNext()){
n = sc.nextInt();
String[] word = new String[n];
for(int i = 0;i < n;i ++){
word[i] = sc.next();
}
for(int i = 0;i < n - 1;i ++){
for(int j = i + 1;j < n;j ++){
char[] ch1 = word[i].toCharArray();
char[] ch2 = word[j].toCharArray();
//System.out.println(word[i] + "**" + word[j]);
int len = (ch1.length > ch2.length) ? ch2.length : ch1.length;
int k;
for(k = 0;k < len;k ++){//按字母比较,小的放前面
if(ch1[k] > ch2[k]){
String temp = word[j];
word[j] = word[i];
word[i] = temp;
break;
}
if(ch1[k] < ch2[k]){//如果大小就是进入的顺序,位置就不动
word[i] = word[i];
word[j] = word[j];
break;
}
}
if(k == len){
if(ch1.length > ch2.length){//比较to和too这两种类型
String temp = word[i];
word[i] = word[j];
word[j] = temp;
}
}
}
}
for(int i = 0;i < n;i ++){
System.out.println(word[i]);
}
}
}
}