A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 袁梦希 金牌黑马   /  2012-5-26 13:06  /  2020 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 yuan 于 2012-5-26 13:08 编辑

代码部分:
给定两个字符串,获取两个字符串中最大相同的子串.for(int y=0,z=arr.length=-x; z!=arr.length+1; y++,z++)
*/

  1. public class Exercise2 {

  2. /**
  3. * @param args
  4. */
  5. public static void main(String[] args) {

  6. String s1 = "Inputabcdefghi";
  7. String s2 = "OutputInput";
  8. String s = getMaxSubstring(s2, s1);
  9. System.out.println("s=" + s);

  10. }

  11. public static String getMaxSubstring(String s1, String s2) {

  12. String max, min;
  13. max = s1.length() > s2.length() ? s1 : s2;

  14. min = max.equals(s1) ? s2 : s1;

  15. System.out.println(max + "::" + min);

  16. for (int x = 0; x < min.length(); x++) {
  17. for (int y = 0, z = min.length() - x; z != min.length() + 1; y++, z++) {
  18. String temp = min.substring(y, z);
  19. // System.out.println(temp);
  20. if (max.contains(temp)){
  21. return temp;
  22. }

  23. }
  24. }
  25. return null;
  26. }
  27. }
复制代码
问题部分:
前面代码输出的结果毫无疑问是Input
当我把声明的字符串为
String s1 = "Inputabcde";
String s2 = "abcdeInput";
问题就来了
如果我的需求是:把两个相同长度的的字符串都能输出出来,
也就是结果为:
Input
abcde
怎么来用代码表现:求高手用代码解决我的问题,感激不尽。





评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

2 个回复

倒序浏览
public static String getStr(String s1,String s2){
                String max = "",min = "";
                max = (s1.length())>(s2.length())?s1:s2;
                min = (max==s1)?s2:s1;
               
                for(int i=0;i<min.length();i++){
                        for(int j=0,k=min.length()-i;k!=min.length()+1;k++,j++){
                                String result = min.substring(j, k);
                                if(max.contains(result)){
                                        System.out.println(result);  把这的return改了就行了   也可以吧result append到 StringBuilder里面 把return null 换成return sb。toString() 就行了
                                }
                        }
                }
                return null;
        }
回复 使用道具 举报
老贠的代码没看,看着就蒙
  1.                 String fu = "Inputabcde";
  2.                 String zi = "abcdeInput";
  3.                
  4.                 int length = zi.length();
  5.                 int offset = 0;
  6.                
  7.                 boolean flag = false;
  8.                 while(true)
  9.         {
  10.                         CharSequence curr = zi.subSequence(offset, offset+length);
  11.                         System.out.print(curr + " ");
  12.                 if(fu.contains(curr))
  13.                 {
  14.                         System.out.print("true");
  15.                         flag = true;
  16.                 }
  17.                 else {
  18.                                 System.out.print("false");
  19.                         }
  20.                 System.out.println(" " + offset + " " + length+" " +zi.length());
  21.                 
  22.                 if(offset+length == zi.length() && length > 0)
  23.                 {
  24.                         if(flag)
  25.                                 break;
  26.                         length--;
  27.                         offset = 0;
  28.                 }
  29.                 else {
  30.                         offset++;

  31.                         }
  32.                 
  33.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马