gta5网站建设中什么意思,wordpress难度指数,室内设计最好的公司,wordpress 问答主机名排序 主机名由多级域名组成#xff0c;自右向左#xff0c;依次是顶级域名、二级域名、三级域名…..以此类推 例#xff0c;主机名#xff1a;google.com.hkhk是顶级域名 com是二级域名 google是三级域名 现在我们需要实现一个主机名的排序功能 排序规则 1#xff… 主机名排序 主机名由多级域名组成自右向左依次是顶级域名、二级域名、三级域名…..以此类推 例主机名google.com.hkhk是顶级域名 com是二级域名 google是三级域名 现在我们需要实现一个主机名的排序功能 排序规则 1主机名按照域名等级排序即先按照顶级域名排序顶级域名相同的再按照二级域名排序顶级和二级域名均相同的再按照三级域名排序以此类推直到整个主机名排序完毕 2如果短主机名是由长主机名从顶级域名开始的连续一个或多个域名组成短主机名排在长主机名前面。例google.com 排在gmail.google.com 之前 3每一级域名按照字典顺序排序字典顺序定义见下页 输入确保符合以下规则无需检查1主机名以字符串形式给出非空串2主机名中仅包含小写英文字母和分隔符’.’3主机名中没有连续的’.’不以’.’开始也不以’.’结束 3主机名不存在重复字典顺序定义1、两个单词(字母按照自左向右顺序)先以第一个字母作为排序的基准如果第一个字母相同就用第二个字母为基准如果第二个字母相同就以第三个字母为基准。依此类推如果到某个字母不相同字母顺序在前的那个单词顺序在前。 例abc 排在 abf 之前 2、如果短单词是长单词从首字母开始连续的一部分短单词顺序在前。 例abc 排在 abcd 之前 测试用例: public class DemoTest extends TestCase {// tearDown: 在每个用例后执行一次protected void tearDown() {Demo.clear();}// 序列号越界public void testCase01() {String[] input { mail.huawei.com, huawei.com, teltalk.org,google.com.hk, imail.huawei.com };for (int i 0; i input.length; i) {assertEquals(0, Demo.add_host_name(input[i]));}assertEquals(null, Demo.get_host_name(6));}// 样例用例mail.huawei.com huawei.com teltalk.org google.com.hk// imail.huawei.compublic void testCase02() {String[] input { mail.huawei.com, huawei.com, teltalk.org,google.com.hk, imail.huawei.com };String[] expect { huawei.com, imail.huawei.com,mail.huawei.com, google.com.hk, teltalk.org };for (int i 0; i input.length; i) {assertEquals(0, Demo.add_host_name(input[i]));}for (int i 0; i input.length; i) {assertEquals(expect[i], Demo.get_host_name(i 1));}}解答 public final class Demo {private static ListString nameListnew LinkedListString();/*****************************************************************************Description : 添加主机名Input Param : host_name 主机名字符串非空串Output Param : 无Return Value : 成功返回0失败返回-1*****************************************************************************/public static int add_host_name( String host_name){if(host_name!null !.equals(host_name)){int inameList.size()/2;int min0;int maxnameList.size();String[] insertshost_name.split([.]);
out: while(true){if(imax){break out;}String[] beforesnameList.get(i).split([.]);int x0;char[] beforecharsnull;char[] insertcharsnull;//将分隔后的String挨个字符比较若当前String包含字符前一部分全相同则比较长度否则继续循环while(xMath.min(befores.length, inserts.length)){String beforebefores[befores.length-1-x];String insertinserts[inserts.length-1-x];beforecharsbefore.toCharArray();insertcharsinsert.toCharArray();for(int y0;yMath.min(beforechars.length, insertchars.length);y){if(beforechars[y]insertchars[y]){continue;}else if(beforechars[y]insertchars[y]){maxi;i(i1min)/2;continue out;}else if(beforechars[y]insertchars[y]){mini;i(i1max)/2;continue out;}}if(beforechars.lengthinsertchars.length){maxi;i(i1min)/2;continue out;}else if(beforechars.lengthinsertchars.length){mini;i(i1max)/2;continue out;}x;}if(befores.lengthinserts.length){maxi;i(i1min)/2;continue out;}else if(befores.lengthinserts.length){mini;i(i1max)/2;continue out;}}nameList.add(i,host_name);return 0;}return -1;}/*****************************************************************************Description : 获取主机名Input Param : serial_number 排序后的序列号从1开始Return Value : 主机名字符串*****************************************************************************/public static String get_host_name(int serial_number){/* 在这里实现功能 */if(nameList!null nameList.size()serial_number){return nameList.get(serial_number-1);}return null;}/*****************************************************************************Description : 清空所有主机名Input Param : 无Output Param : 无Return Value : 无*****************************************************************************/public static void clear(){nameListnew LinkedListString();/* 在这里实现功能 */} posted on 2013-09-22 20:38 刘浒 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/liuhu/p/3333818.html