黑马程序员技术交流社区
标题:
获取最大字串的问题
[打印本页]
作者:
刘家斌
时间:
2014-10-16 12:05
标题:
获取最大字串的问题
这是毕老师视频里获得最大字串的事例,我·想知道这个for嵌套是怎么出来的,不是很理解,最好能注释下,谢谢了
public static String ziChuan(String str,String st)
{
String max,min;
max=(str.length()>st.length())?str:st;
min=(max.equals(str))?st:str;
for(int x=0;x<max.length();x++)
{
for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
{
if(max.indexOf(min.substring(y,z))!=-1)
return min.substring(y,z);
}
}
return " ";
复制代码
作者:
哈达洋
时间:
2014-10-16 19:25
你还是先不要去想代码是怎么来的,你先思考如果是你做的话,你怎么做?用什么原理做,你想清楚了,自然就会用到双重for循环
作者:
wf111sxwf
时间:
2014-10-20 20:50
For循环嵌套简单说就是大圈套小圈,一个变量变化时有其他变量随之变化就要用到它。
作者:
wf111sxwf
时间:
2014-10-20 20:54
你的问题中当不断的缩小那个小字符串子串的长度的时候 ,子串的头角标于尾角标也在随之发生取值范围的改变所以要用循环嵌套,手机党写不了注释你就将就着理解吧
作者:
cxdzh
时间:
2014-10-20 21:49
public static String ziChuan(String str,String st)
{
String max,min;
max=(str.length()>st.length())?str:st;//比较两个字符串的长短,用max来存储长的字符串
min=(max.equals(str))?st:str;//确定长的字符串之后,另一个是短的
for(int x=0;x<min.length();x++)
//外圈控制比几次,但总次数不能超过短字符串的总长度.
{
for(int y=0,z=min.length()-x;z!=min.length()+1;y++,z++)
//y=每次比较时,取字符串的起始位置.
//z=每次比较时,取字符串的结束位置.
//意思是每一轮外圈循环,内圈都从短字符串里,取一个固定长度的子字符串,用来跟长字符串比较.
//minlength()-x,意思是外圈每循环一轮,x会+1,这样用来比较的字符串长度也就减少了一位.
//内圈循环每比较一次,起始位置后移一位,结束位置也后移一位,直到结束位置等于短字符串的最大长度+1位置.
//因为要取来比较的子字符串长度固定.超过就取不了了.
{
if(max.indexOf(min.substring(y,z))!=-1)//用从短的字符串里取出来的子字符串跟长字符串比较,如果不等于-1,表示已经有匹配了,
return min.substring(y,z);//返回匹配的那个子字符串.
}
}
return " ";
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2