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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 途中ms前进 中级黑马   /  2015-5-25 20:44  /  448 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 途中ms前进 于 2015-5-25 21:12 编辑

获取两个字符串中最大相同子串。
class StringTestDemo
{public static void main(String[] args)
        {String s1="abcdiopjgfdbn";
        String s2="abcdryuhfds";
        sop(getMaxSubSring(s1,s2));
        
        }



public static String getMaxSubSring(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;y++,z++)
                {
                String temp=min.substring(y,z);
                if(max.contains(temp))
                return temp;
                }

                }
                return "";

                }
                public static void sop(String str)
        {
                System.out.println(str);
                }

}




Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 12
        at java.lang.String.substring(String.java:1951)
        at aaa.Test5.getMaxSubSring(Test5.java:20)
        at aaa.Test5.main(Test5.java:7)


7 个回复

倒序浏览
z=min.length()-x,这个越界了,当x = 0的时候,z = min.length().
回复 使用道具 举报
是z!=min.length()+1.
回复 使用道具 举报
你主要是没有理解substring(int start,int end);这个是从start到end-1,所以你的代码会使得start跑到end前面去,肯定会出错了。
回复 使用道具 举报
z!=min.length()+1  应该是 这个
回复 使用道具 举报
看着好混乱啊 ,,为什么不用贴代码的功能 ,这样也让我们看着舒服点,更方便大家回答你的问题
回复 使用道具 举报
字符串数组角标越界
回复 使用道具 举报
水水更健康。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马