找到含有n個不同字元的子串的最大長度
阿新 • • 發佈:2019-02-18
要求先輸入字串,再輸入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(); } }