facebook注册_Facebook黑客杯:用Java学习好学的学生

facebook注册

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中的“好学学生”解决方案

翻译自: https://www.javacodegeeks.com/2013/03/facebook-hacker-cup-studious-student-problem-solution-in-java.html

facebook注册

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值