编程语言中无重复字符最长子串的示例分析
发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,小编给大家分享一下编程语言中无重复字符最长子串的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、说明给定一个字符
千家信息网最后更新 2025年11月20日编程语言中无重复字符最长子串的示例分析
小编给大家分享一下编程语言中无重复字符最长子串的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一、说明
给定一个字符串,找出不含有重复字符的 最长子串 的长度。
示例:
给定 `"abcabcbb"` ,没有重复字符的最长子串是 `"abc"` ,那么长度就是3。
给定 `"bbbbb"` ,最长的子串就是 `"b"` ,长度是1。
给定 `"pwwkew"` ,最长子串是 `"wke"` ,长度是3。请注意答案必须是一个 子串 , `"pwke"` 是 _子序列_ 而不是子串。
二、解决方案参考
1. Swift 语言
class LongestSubstringWithoutRepeatingCharacters { func lengthOfLongestSubstring(_ s: String) -> Int { var longest = 0, left = 0, set = Set() let sChars = Array(s) for (i, char) in sChars.enumerated() { if set.contains(char) { longest = max(longest, i - left) while sChars[left] != char { set.remove(sChars[left]) left += 1 } left += 1 } else { set.insert(char) } } return max(longest, sChars.count - left) }} 2. JavaScript 语言
/** * @param {string} s * @return {number} */var lengthOfLongestSubstring = function(s) { var hash = {}; var start = 0; var ans = 0; for (var i = 0, len = s.length; i < len; i++) { var item = s[i]; if (!hash[item]) hash[item] = true; else { // item 已经在 substring 中存在了 for (; ;) { if (s[start] === item) { start++; break; } hash[s[start]] = false; start++; } } ans = Math.max(ans, i - start + 1); } return ans;};3. Python 语言
class Solution(object): def _lengthOfLongestSubstring(self, s): """ :type s: str :rtype: int """ d = collections.defaultdict(int) l = ans = 0 for i, c in enumerate(s): while l > 0 and d[c] > 0: d[s[i-l]] -= 1 l -= 1 d[c] += 1 l += 1 ans = max(ans, l) return ans def lengthOfLongestSubstring(self, s): d = {} start = 0 ans = 0 for i,c in enumerate(s): if c in d: start = max(start, d[c] + 1) d[c] = i ans = max(ans, i - start + 1) return ans4. Java 语言
// 方式一public class Solution { public int lengthOfLongestSubstring(String s) { int n = s.length(); int ans = 0; for (int i = 0; i < n; i++) for (int j = i + 1; j <= n; j++) if (allUnique(s, i, j)) ans = Math.max(ans, j - i); return ans; } public boolean allUnique(String s, int start, int end) { Set set = new HashSet<>(); for (int i = start; i < end; i++) { Character ch = s.charAt(i); if (set.contains(ch)) return false; set.add(ch); } return true; }}// 方式二public class Solution { public int lengthOfLongestSubstring(String s) { int n = s.length(); Set set = new HashSet<>(); int ans = 0, i = 0, j = 0; while (i < n && j < n) { // try to extend the range [i, j] if (!set.contains(s.charAt(j))){ set.add(s.charAt(j++)); ans = Math.max(ans, j - i); } else { set.remove(s.charAt(i++)); } } return ans; }}// 方式三public class Solution { public int lengthOfLongestSubstring(String s) { int n = s.length(), ans = 0; Map map = new HashMap<>(); // current index of character // try to extend the range [i, j] for (int j = 0, i = 0; j < n; j++) { if (map.containsKey(s.charAt(j))) { i = Math.max(map.get(s.charAt(j)), i); } ans = Math.max(ans, j - i + 1); map.put(s.charAt(j), j + 1); } return ans; }} 5. C++ 语言
#include#include #include #include
6. C 语言
#include#include #include static int lengthOfLongestSubstring(char *s){ int offset[128]; int max_len = 0; int len = 0; int index = 0; memset(offset, 0xff, sizeof(offset)); while (*s != '\0') { if (offset[*s] == -1) { len++; } else { if (index - offset[*s] > len) { len++; } else { len = index - offset[*s]; } } if (len > max_len) { max_len = len; } offset[*s++] = index++; } return max_len;}int main(int argc, char **argv){ if (argc != 2) { fprintf(stderr, "Usage: ./test string"); exit(-1); } printf("%d", lengthOfLongestSubstring(argv[1])); return 0;}
以上是"编程语言中无重复字符最长子串的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
语言
最长
字符
长度
示例
方式
篇文章
j++
编程语言
分析
编程
内容
就是
参考
不怎么
大部分
字符串
序列
方案
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
企业在网络安全维护中面临的问题
北京回收二手服务器
正规网络技术服务产品
非互联网高科技有限公司分红吗
数据库密码解密错误
进行差异数据库备份遵循原则
国家会不会招网络安全
锐思数据库申万
承德避暑山庄住宿软件开发
互联网科技内账表格
昌平区专业网络技术服务大概费用
数据库中的字段大小写吗
光合维度软件开发
应用服务器背景故事
服务器备案需要花钱吗
怎么选择云服务器
云下载服务器
微校互联网科技有限公司
河南本地软件开发代理价格
计算机网络技术色盲可以报吗
苹果电脑服务器下载
报表数据库服务器未处于
数据库不建议容器
承德避暑山庄住宿软件开发
如何给网络安全认证
上海泛多软件开发公司官网
软件开发单位权属
语音聊天服务器
服务器光模块供应公司
香港巴士数据库