要求先输入字符串,再输入n的值,输出结果为:含有n个不同字符的子串的最大长度。
处理方法:从字符串第一个字符开始,依次取大于等于的子串,得到含有n个字符的子串,如果新的子串长度大于maxSubStr,则更新maxSubStr。程序中需要防止字符标号溢出异常和字符标号越界(n的值大于字符串长度)异常。代码如下:
import java.util.Scanner;
public class MaxSubstringForN
{
private String str;
private int n;
void deal()
{
if(n>str.length())
{
System.out.println("子串的长度不能大于字符串的长度,重新输入");
return;
}
String maxSubStr=str.substring(0,n);
for(int i=0;i<str.length()-1;i++)
{
int j=i+n;
if(j<str.length())
{
String tmp=str.substring(i, j);
while((j<str length="" -1="" tmp="" indexof="" str="" charat="" j="">=0)
{
tmp=str.substring(i, ++j);
}
if(tmp.length()>maxSubStr.length())
maxSubStr=tmp;
}
}
System.out.println(str+"含有"+n+"个字符的最大子串为:"+maxSubStr+"其长度为: "+maxSubStr.length());
}
public static void main(String[] args)
{
MaxSubstringForN mn=new MaxSubstringForN();
Scanner sc=new Scanner(System.in);
mn.str=sc.nextLine();
mn.n=sc.nextInt();
mn.deal();
}
}