facebook注册
该程序是针对Facebook Hacker Cup的好学学生问题的解决方案。 问题可以在这里找到: link 。
问题:
好学的学生
您会得到一个单词列表供您学习和记忆。 作为语言和艺术的勤奋学生,您决定完全不学习它们,而是根据它们来编写毫无意义的游戏。 您想出的一个游戏是看如何将单词连接起来以生成字典上最低的字符串。
输入值
作为玩此游戏的输入,您将收到一个包含整数N的文本文件,该整数是您玩游戏所需的单词集数量。 随后是N个单词集,每个单词集均以整数M(集合中的单词数)开头,后跟M个单词。 输入中的所有标记将由一些空格分隔,除N和M外,将完全由小写字母组成。
输出量
您的提交应包含每个对应单词集的按字典顺序排列的最短字符串,每行按顺序排列。
约束条件
1 <= N <= 100
1 <= M <= 9
1 <= all word lengths <= 10
输入示例
5
6 facebook hacker cup for studious students
5 k duz q rc lvraw
5 mybea zdr yubx xe dyroiy
5 jibw ji jp bw jibw
5 uiuy hopji li j dcyi
输出示例
cupfacebookforhackerstudentsstudious
duzklvrawqrc
dyroiymybeaxeyubxzdr
bwjibwjibwjijp
dcyihopjijliuiuy
import java.io.*;
import java.util.Arrays;
public class StudiousStudent
{
StudiousStudent(String inputFile) throws IOException, FileNotFoundException
{
FileInputStream fis = new FileInputStream(inputFile);
DataInputStream in = new DataInputStream(fis);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String line = null;
String splitArray[] = null;
//Reading the file line by line
while((line = br.readLine()) != null)
{
//Splitting a line from spaces
splitArray = line.split(" ");
//Initial Sort
Arrays.sort(splitArray);
//Advanced Sort
for (int i = 1; i<splitArray.length; i++)
{
for (int j = i+1; j<splitArray.length; j++)
{
if ((splitArray[j].startsWith(splitArray[i])) && (splitArray[i].length() < splitArray[j].length()))
{
String tmp = splitArray[i];
splitArray[i] = splitArray[j];
splitArray[j] = tmp;
}
}
}
for (int i = 1; i<splitArray.length; i++) System.out.print(splitArray[i]+"");
System.out.println();
}
br.close();
}
public static void main(String args[]) throws FileNotFoundException, IOException
{
new StudiousStudent("StudiousStudent.txt");
}
}
输出:
参考资料: Facebook黑客杯:我们的JCG合作伙伴Vishal Lad在myCoding.net博客上提供的Java中的“好学学生”解决方案。
facebook注册