/*思路 将两个字符串转换为字符数组 对第一字符数组遍历 每遍历一个元素 就对第二字符数组从头开始遍历
* 每次找到相同的元素 就开始计数 并且同时找 两个字符数组下一个元素是否相同
*
*
* */
public int maxString(String str1,String str2){
int str1_length = str1.length();
int str2_length = str2.length();
char[] ch1 = new char[str1.length()];//存取字符串1的字符数组
char[] ch2 = new char[str2.length()];//存取字符串2的字符数组
char[] ch_max=new char[str1.length()] ;//存取子串
int max=0;
int temp_max = 0;
String str_max ="";//将存取子串的字符数组转换为字符串
int n = 0; //存取子串长度;
//if(str1_lengt)
//将字符串1转换为字符数组
for(int i = 0; i < str1_length; i++){
ch1[i] = str1.charAt(i);
}
//将字符串2转换为字符数组
for(int i = 0; i < str2_length; i++){
ch2[i] = str2.charAt(i);
}
for(int i = 0; i < str1_length; i++)//对第一个字符数组进行遍历
{
int k = i;
for(int j = 0;j < str2_length; j++){//对第二个字符数组进行遍历
int m = j;
if(ch1[i] == ch2[j])//如果一发现第一个数组的 当前元素 与第二数组的摸个元素相同 则开始比较第二个元素
{
n=0;
k = i;
temp_max = 0;//临时变量 当前最大子串长度
//上面三个变量 每次找到第一个字符数组的元素 与第二字符数组元素相等时候 初始化。
ch_max[n]= ch1[i];//存取相同的子串
temp_max++;//开始比较两个字符数组下一个元素是否相同
m++;
k++;
for(; m < str2_length && k < str1_length;m++)
{
if(ch2[m]==ch1[k])//两个字符数组的下一个元素相同 一直循环
{
temp_max++;//相同一回 则 临时最大值加1
n++;//存取子串的下标加1
//System.out.println(n);
ch_max[n]=ch1[k];//存取相同的元素
k++;//str1下标加1 继续比较两个字符数组的下一个元素
}
else
{
break;//只要有一个不相等 退出循环
}
}//end third for
if(temp_max > max)//存取最大子串疮毒 将最大子串转换为字符串 存入str_max
{
max = temp_max;
str_max = new String(ch_max);
//System.out.println(str_max);
}
}//end if(ch1[i] == ch2[j]
}//end second for
}//end first for
System.out.println(str_max);
return max;
}
* 每次找到相同的元素 就开始计数 并且同时找 两个字符数组下一个元素是否相同
*
*
* */
public int maxString(String str1,String str2){
int str1_length = str1.length();
int str2_length = str2.length();
char[] ch1 = new char[str1.length()];//存取字符串1的字符数组
char[] ch2 = new char[str2.length()];//存取字符串2的字符数组
char[] ch_max=new char[str1.length()] ;//存取子串
int max=0;
int temp_max = 0;
String str_max ="";//将存取子串的字符数组转换为字符串
int n = 0; //存取子串长度;
//if(str1_lengt)
//将字符串1转换为字符数组
for(int i = 0; i < str1_length; i++){
ch1[i] = str1.charAt(i);
}
//将字符串2转换为字符数组
for(int i = 0; i < str2_length; i++){
ch2[i] = str2.charAt(i);
}
for(int i = 0; i < str1_length; i++)//对第一个字符数组进行遍历
{
int k = i;
for(int j = 0;j < str2_length; j++){//对第二个字符数组进行遍历
int m = j;
if(ch1[i] == ch2[j])//如果一发现第一个数组的 当前元素 与第二数组的摸个元素相同 则开始比较第二个元素
{
n=0;
k = i;
temp_max = 0;//临时变量 当前最大子串长度
//上面三个变量 每次找到第一个字符数组的元素 与第二字符数组元素相等时候 初始化。
ch_max[n]= ch1[i];//存取相同的子串
temp_max++;//开始比较两个字符数组下一个元素是否相同
m++;
k++;
for(; m < str2_length && k < str1_length;m++)
{
if(ch2[m]==ch1[k])//两个字符数组的下一个元素相同 一直循环
{
temp_max++;//相同一回 则 临时最大值加1
n++;//存取子串的下标加1
//System.out.println(n);
ch_max[n]=ch1[k];//存取相同的元素
k++;//str1下标加1 继续比较两个字符数组的下一个元素
}
else
{
break;//只要有一个不相等 退出循环
}
}//end third for
if(temp_max > max)//存取最大子串疮毒 将最大子串转换为字符串 存入str_max
{
max = temp_max;
str_max = new String(ch_max);
//System.out.println(str_max);
}
}//end if(ch1[i] == ch2[j]
}//end second for
}//end first for
System.out.println(str_max);
return max;
}