最长子字符串的长度(一)

题目描述:

给你一个字符串 s,字符串s首尾相连成一个环形 ,请你在环中找出 'o' 字符出现了偶数次最长子字符串的长度。

输入描述:

输入是一串小写字母组成的字符串

输出描述:

输出是一个整数

补充说明:

1 <= s.length <= 5 x 10^5

s 只包含小写英文字母。

示例1

输入:

alolobo

输出:

6 说明:

最长子字符串之一是 "alolob",它包含'o' 2个。

示例2

输入:

looxdolx

输出:

7

说明:

最长子字符串是 "oxdolxl",由于是首尾连接在一起的,所以最后一个 'x' 和开头的 'l'是连接在一起的,此字符串包含 2 个'o' 。

示例3

输入:

bcbcbc

输出:

6 说明:

这个示例中,字符串 "bcbcbc" 本身就是最长的,因为 'o' 都出现了 0 次。

题解

如果出现 偶数个 o 则为 s.length 如果出现 奇数个 o 则去掉一个后 o 的数量为偶数 长度为 s.length - 1

源码 java

public class LongestSubString {
	static Input input ;
	static {
		input = new Input("alolobo\n" +
				"looxdolx\n" +
				"bcbcbc");
	}

	public static void main(String[] args) {

		maxSubstring(input.nextLine());
		maxSubstring(input.nextLine());
		maxSubstring(input.nextLine());
	}

	private static void maxSubstring(String s) {
		int count = 0;
		for (int i = 0; i < s.length(); i++) {
			if (s.charAt(i) == 'o') {
				count++;
			}
		}
		if (count % 2 == 0) {
			System.out.println(s.length());
		} else {
			System.out.println(s.length() - 1);
		}
	}
}
#如果再来一次,你还会选择这个工作吗?#
全部评论

相关推荐

优化前端页面性能是提升用户体验和减少加载时间的重要任务。以下是一些与浏览器内核相关的技巧,可以用于优化前端页面性能:https://www.nowcoder.com/issue/tutorial?zhuanlanId=Mg58Em&amp;amp;uuid=e603181d8a9b4b9ea0cc9be7cb8778b7减少HTTP请求:减少页面中的资源文件数量和大小,从而减少浏览器发起的HTTP请求。可以通过合并CSS和JavaScript文件、使用CSS&nbsp;Sprites合并小图标、使用字体图标代替图片等方式来减少请求。压缩和缩小资源文件:使用压缩工具(如Gzip)对CSS、JavaScript和HTML等文件进行压缩,减小文件大小。另外,可以使用图片压缩工具和正确设置图片的尺寸来减小图片文件的大小。使用浏览器缓存:通过合理设置HTTP响应头(如Cache-Control、ETag、Last-Modified等),充分利用浏览器缓存机制,减少重复的资源请求。静态资源文件应该设置为长期缓存,以及时利用用户的浏览器缓存。异步加载脚本:将一些不必要阻止页面加载的JavaScript脚本放到页面底部,并使用async或defer属性来实现异步加载,从而提高页面的加载性能。懒加载和延迟加载:对页面上的图片和其他资源进行懒加载,即仅在它们进入可视区域时才加载。这样可以减少初始加载时间并节省带宽。使用CDN(内容分发网络):将常用的静态资源文件托管到CDN上,利用CDN的分布式网络,将资源缓存在距用户较近的服务器,提高资源加载速度。避免使用重复的代码和冗余的样式:通过避免冗余的HTML结构、CSS样式和JavaScript代码,减小页面文件大小,以及提高渲染和执行效率。使用内联和内部样式:将关键的CSS样式直接内联到HTML中或使用内部样式表,避免额外的外部CSS文件请求,提高页面加载速度。最小化重排和重绘:避免频繁的DOM操作和样式改变,以减少引发浏览器重排(reflow)和重绘(repaint)的次数。可以使用transform、opacity等属性进行优化。使用Web&nbsp;Workers:将一些耗时的JavaScript操作(如计算、数据处理)放到Web&nbsp;Workers中运行,使主线程可以更快地响应用户交互,提高页面的性能。使用事件委托:通过事件委托将事件处理函数绑定到父元素,减少事件处理函数的数量,提高页面的响应速度。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务