1. 程式人生 > >找到含有n個不同字元的子串的最大長度

找到含有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();
  }
}