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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小十 中级黑马   /  2015-3-10 16:52  /  1040 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

public class DeMo14 {

        public static String getMaxSubString(String s1,String s2){
                String max = "",min="";
                max = (s1.length()>s2.length())?s1:s2;
                min = (max ==s1)?s2:s1;
                for(int x = 0; x<min.length(); x++){
                        for(int y = 0, z = min.length()-x;z!=min.length()+1;z++,y++){
                                String temp = min.substring(y,z);
                                if(max.contains(temp))
                                        return temp;
                               
                        }
                }
                return min;
        }

        public static void main(String[] args) {
                //两个字符串相比较输出其中最大的相同字符数。
                String s1 = "asdqweroerhellofajfg";
                String s2 = "enhqhellonge";
                String str = getMaxSubString(s1,s2);
                System.out.println(str);

        }

}
代码中return min返回语句在程序中有没有意义?还是只是起让程序通过的作用?写成return“”也可以通过呀。。。求解!

7 个回复

正序浏览
就是,没找到就返回,两个字符串较少的那个,应该是return null
回复 使用道具 举报
  1. String s2 = "xyzut";
  2.                 String str = getMaxSubString(s1,s2);
  3.                 if(str==null){
  4.                        
  5.                         System.out.println("s1,s2没有相同字符!");
  6.                 }
  7.                 else {
  8.                         System.out.println(str);
  9.                                 }

  10.         }

  11. }
复制代码

一次还贴不完

点评

是的  发表于 2015-3-10 18:27
回复 使用道具 举报
写成return min;那样写,不严谨。当s1和s2有相同字符时运行结果没错!当s1和s2没有相同字符时,结果就与题目要求不符了!我觉得改成这样比较好!
  1. package demo;

  2. public class DemoMaxSubString {
  3.        

  4.         public static String getMaxSubString(String s1,String s2){
  5.                 String max = "",min="";
  6.                 max = (s1.length()>s2.length())?s1:s2;
  7.                 min = (max ==s1)?s2:s1;
  8.                 for(int x = 0; x<min.length(); x++){
  9.                         for(int y = 0, z = min.length()-x;z!=min.length()+1;z++,y++){
  10.                                 String temp = min.substring(y,z);
  11.                                 if(max.contains(temp))
  12.                                         return temp;
  13.                                 
  14.                         }
  15.                 }
  16.                 return null;
  17.         }

  18.         public static void main(String[] args) {
  19.                 //两个字符串相比较输出其中最大的相同字符数。
  20.                 String s1 = "asdqweroerhellofajfg";
复制代码


评分

参与人数 1技术分 +1 收起 理由
lwj123 + 1 没有交集就应该返回一个null才对.

查看全部评分

回复 使用道具 举报
并非没有意义,循环语句中的return语句是在找到了最大子串时执行的,当两个字符串没有交集时,则执行循环语句外面的return语句,此时return语句应返回null,证明没有找到子串
回复 使用道具 举报
肯定是有意义的。
if(max.contains(temp))
     return temp;
如果if为true 则执行return temp;
如果if为false
则执行return min.
有返回语句肯定成功通过编译的。

点评

原来是这样  发表于 2015-3-10 17:27
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马