您的位置:首页 > 其它

从字符串S中找出不包含重复字符的最大连续子字符串长度

2009-10-03 19:52 225 查看
package algorithm;

import java.util.Scanner;

/**
* 从字符串S中找出不包含重复字符的最大连续子字符串长度,
* 如1:"abcdapp"最长合法子串为"bcdap"返回长度为5
* 2:"aaaaaaa"最长合法子串为"a",返回长度为1
* @author Administrator
*
*/

public class NonRepeatedSubString {

public static void main(String[]args){
Scanner scanner=new Scanner(System.in);
String str=scanner.nextLine();
findMaxNonReaptedString(str);

}
public static void findMaxNonReaptedString(String str)
{

int begin=0;
int end=0;
int maxLength=0;
int tempLength=0;

int k=0;
char c=0;

for(int i=0,j=0;j<str.length();j++)
{

String source=str.substring(i,j);
System.out.println(source);
c=str.charAt(j);
k=contains(source,c);
if(k>-1)
{

i=i+k+1;
tempLength=j-i+1;

}
else{

tempLength+=1;
if(tempLength>maxLength)
{
maxLength=tempLength;
begin=i;
end=j;
}
}

}
System.out.println("the max substring without repeated char is:"+str.substring(begin,end+1));

}
public static int contains(String str,char c)
{
String s=Character.toString(c);
return str.indexOf(s);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐