/** */ /** * 神州数码笔试题目 * 原题:1.找出两个字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串为"actyet" * 语言:实现语言 java * */ import java.util. * ; public class SubString ... { ArrayList ls = new ArrayList(); public void getSameString(String s1,String s2)...{ String s3 ="";//is the min string String s4 ="";//is the max string if(s1.length() > s2.length())...{ s3 = s2; s4 = s1; }else...{ s3 = s1; s4 = s2; } String s = "";//存储最后得到的字符串 int len = s3.length();//is min length of the string for(int i=0;i<len;i++)...{ int m = 0; int ch = (int)s3.charAt(i); int ch1 = (int)s4.charAt(m); if(ch == ch1)...{ for(int j=i;j<len;j++)...{ ch = (int)s3.charAt(j); ch1 = (int)s4.charAt(m); if(ch1 == ch)...{ s = s + String.valueOf(s3.charAt(j)); }else...{ if(!s.equals("")) ls.add(s); s = ""; break; } m++; }//end for if(!s.equals("")) ls.add(s); s = ""; }else...{ //循环找到一个首字母相同 while(m < s4.length())...{ ch1 = (int)s4.charAt(m); ch = (int)s3.charAt(i);//重要,不要叫下面的给覆盖 if(ch == ch1)...{ for(int j=i;j<len&&m<s4.length();j++)...{ ch = (int)s3.charAt(j); ch1 = (int)s4.charAt(m); //System.out.println("ch : "+s3.charAt(j) + " : "+s4.charAt(m)); if(ch == ch1)...{ s = s + String.valueOf(s3.charAt(j)); }else...{ if(!s.equals("")) ls.add(s); s = ""; m--; break; } m++; }//end inner for if(!s.equals("")) ls.add(s); s = ""; }else...{ m++; continue; } m++; }//end while }//end else } } public String getMaxSameString(String s1,String s2)...{ getSameString(s1,s2); String s = ""; int len = 0; for(int i=0;i<ls.size();i++)...{ String sub = (String)ls.get(i); if(sub.length() > len)...{ s = sub; len = sub.length(); } } return s; } public static void main(String[] args)...{ SubString sub = new SubString(); if(args.length < 2)...{ System.out.println("please input the string"); return; } System.out.println(sub.getMaxSameString(args[0],args[1])); }} // 更多题目见:www.search.bdkey.com