找到含有n个不同字符的子串的最大长度

       要求先输入字符串,再输入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();
  }
}






版权声明:本文为csdanteng原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。