求一段字符串内最长的非空子字符串的长度(实例)

题目:求一段字符串内最长的非空子字符串的长度

示例:
输入:s = "book"
输出:2
解释:子字符串 "oo" 长度为 2 ,只包含字符 'o' 。

输入:s = "example"
输出:1
解释:子字符串无重复。

解答方案

public class One {
	 public static int subset(String s) {
         int longs= 1, temp = 1;
         for (int i = 1; i < s.length(); ++i) {
             if (s.charAt(i) == s.charAt(i - 1)) {
                 ++temp;
             } else {
                 temp = 1;
             }
            //比较换值
            if(longs<temp ) {
            	longs=temp ;
            }
         }
         return longs;
    }
	public static void main(String[] args) {
		int num=subset("book");
		System.out.println(num);
	} 
}

在这里插入图片描述

提升思考 怎么将字符 一起输出

public class One {
    //注意这时返回类型应改为String型
	 public static String subset(String s) {
		   int longs= 1, temp = 1;
		   char longsChar = 0,tempChar=0;
	         for (int i = 1; i < s.length(); ++i) {
	             if (s.charAt(i) == s.charAt(i - 1)) {
	                 ++temp;
	                 tempChar=s.charAt(i-1);
	             } else {
	                 temp = 1;
	             }
	            //比较换值
	            if(longs<temp ) {
	            	longs=temp ;
	            	longsChar=tempChar;
	            }
	         }
	         return "最长子集为"+longsChar+"为"+longs;
    }
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String c=subset("book");
		System.out.println(c);
	} 
}

在这里插入图片描述

优化思考

 longs= Math.max(longs, temp );
 相当于       
 if(longs<temp ) {
	  longs=temp ;
 }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值