leetcode03-Longest Substring Without Repeating Characters

2024-04-29 00:12

本文主要是介绍leetcode03-Longest Substring Without Repeating Characters,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目

给定一个字符串 s ,请你找出其中不含有重复字符的 最长 子串的长度。
示例 1:
输入: s = “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。

分析

很直观的思路就是遍历字符串,如果子串中没有重复元素那么长度不停加1,同时我们应该记录不重复子串的开始坐标,不重复子串的开始坐标一定是刚刚出现的重复元素对应的坐标+1,同时一定要注意不重复子串的开始坐标不能比重复元素对应的坐标小(abba这种情况)

import java.util.Arrays;public class longestSubstringWithoutRepeatingCharacters {public static void main(String[] args) {System.out.println(getLong("abcabcbb"));}public static int getLong(String s) {int len = s.length();int[] arr = new int[256];Arrays.fill(arr,-1);int left = 0;int res = 0;for(int i = 0;i<len;i++) {if(s.charAt(i) != -1 && arr[s.charAt(i)] >= left) {left = arr[s.charAt(i)] + 1;}arr[s.charAt(i)] = i;int num = i - left + 1;if(res < num) {res = num;}}return res;}
}

这篇关于leetcode03-Longest Substring Without Repeating Characters的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/944631

相关文章

index of 的用法与subString的用法

转载一:IndexOf()是检索字符串里面是否包含某个值, 把这个值的索引记录下来.. 如果没用找到则返回-1 Substring(0,2)是载取字符串的, 取其中的某些值 就是从索引处开始 截取几个 这里是从第一个开始 截取两个 indexOf只匹配到第一个合适的,把位置返回给你。lastIndexOf是匹配最后一个合适的,把位置返回给你。位置从0开始算的str=str.substring

3. Longest Substring Without Repeating Characters 无重复字符的最长子串

https://leetcode.com/problems/longest-substring-without-repeating-characters/description/ 题目大意:给一个字符串,要求出最长的不含重复字符子串(要求连续,不是子序列). 解题思路:不重复,利用哈希表.hash是以字符的ASC为下标的数组,对应存储该字符最后出现的位置. 设一个标记start,然后一次遍历

[POJ 3764] The xor-longest Path (Tire树 + 贪心)

POJ - 3674 题意是给你一个树,每条边有一个权值,求得树上一条路径,使路径上每条边权值的异或和最大 首先用一个 DFS把根到任意点的路径的异或和求出来 xorv[i] 由异或的性质可得点 u和点 v的异或和即为 xorv[u]^xorv[v] ( 根到两点 LCA的异或和会消去) 然后问题就转化成在区间内找两个值,使得他们的异或和最大 与 LightOJ - 1269一样的做法,

Qml TouchPointPressed without previous release event 错误处理

文章目录 背景解决方案一(参考网上)解决方案二总结 背景 qml项目中遇到了错误: TouchPointPressed without previous release event QQuickEventPoint(valid:true accepted:false state:Pressed scenePos:QPointF(164.333,152.333) id:2000

浅析字符串操作方法slice、substr、substring及其IE兼容性

在截取字符串时常常会用到substr()、substring()、slice()方法,有时混淆之间的用法,故总结下。 slice() 定义:接受一个或者两个参数,第一个参数指定子字符串的开始位置。第二个参数表示子字符串的结束位置(不包括结束位置的那个字符),如果没有传递第二个参数,则将字符串的长度作为结束位置。 1、传递参数为正值情况: var str ="helloWorld";

如何删掉字符串最后一个字符(使用substring方法)

使用st=st.substring(0, st.length()-1);可以使字符串st最后一个字符删掉。       string substring(string, number, number?) 返回第一个参数中从第二个参数指定的位置开始、第三个参数指定的长度的子字符串。

mysql启动之 ERROR! The server quit without updating PID file (/usr/local/mysql/data/gujingdeMacBook-Pro

启动mysql时,出现如下错误: ERROR! The server quit without updating PID file (/usr/local/mysql/data/gujingdeMacBook-Pro.local.pid). 可能的解决方式: 1、可能是/usr/local/mysql/data/数据目录mysql用户没有权限(修改数据目录的权限) 解决方法 :给予权限,执

mysql启动错误之eror: Found option without preceding group in config file: /Users/gukey/.my.cnf at line: 1

Mac Os下启动mysql5.6时,出现如下错误: eror: Found option without preceding group in config file: /Users/gukey/.my.cnf at line: 1 解决方法: mysql的配置文件.my.cnf参数格式有问题,修改之后即可。 mysql配置文件.my.cnf的参数内容可以参考:http://da

Longest Common Prefix问题及解法

问题描述: Write a function to find the longest common prefix string amongst an array of strings. 问题分析: 我们只需要从头到尾把每个字符串共同的字符前缀找出即可。 详见代码: class Solution {public:string longestCommonPrefix(vec

Longest Uncommon Subsequence I问题及解法

问题描述: Given a group of two strings, you need to find the longest uncommon subsequence of this group of two strings. The longest uncommon subsequence is defined as the longest subsequence of one of