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

本文介绍了一种算法,用于找出包含特定数量不同字符的最长子串。该算法通过逐步扩展子串并检查其独特字符数来实现。代码实现了输入字符串及目标字符数的功能,并确保了边界条件的正确处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值