当前位置: 首页 > news >正文

【笔记】语言实例比较 3. 无重复字符的最长子串 C++ Rust Java Python

语言实例比较 3. 无重复字符的最长子串 C++ Rust Java Python

C++

C++: 9ms O ( N 2 ) O(N^2) O(N2), 8.68MB mem O ( 1 ) O(1) O(1)
滑动窗口循环

class Solution
{
public:int lengthOfLongestSubstring(const string s) {//s[start,end) 前面包含 后面不包含int res(0);for (int start(0), end(0); end < s.size(); ++end) {for (int i = start; i < end; ++i)if (s[end] == s[i]) {start = i + 1;break;}res = max(res, end - start + 1);}return res;}
};

滑动窗口动态规划哈希表:12ms O ( N ) O(N) O(N), mem 10.88MB O ( N ) O(N) O(N)
窗口左右指针索引

class Solution {
public:int lengthOfLongestSubstring(string s) {unordered_map<char, int> last_pos_dic;int i = 0, res = 0, len = s.size();for(int j = 0; j < len; j++) {auto p = last_pos_dic.find(s[j]);if (p != last_pos_dic.end())i = max(i, p->second + 1); // 更新左指针last_pos_dic[s[j]] = j; // 哈希表记录res = max(res, j - i + 1); // 更新结果}return res;}
};

滑动窗口动态规划哈希表:14ms
仅保存窗口右指针和size

class Solution {
public:int lengthOfLongestSubstring(string s) {unordered_map<char, int> hash;int result = 0;for (int i = 0, window_size = 0; i < s.size(); ++i) {int last_pos = hash.find(s[i]) == hash.end() ? -1 : hash.find(s[i])->second; //获取索引hash[s[i]] = i;window_size = window_size < i - last_pos ? window_size + 1 : i - last_pos; //发现重复就挪新窗口result = max(window_size, result);}return result;}
};//https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/2361797/3-wu-zhong-fu-zi-fu-de-zui-chang-zi-chua-26i5/

Rust

impl Solution {pub fn length_of_longest_substring(s: String) -> i32 {let chars = s.as_bytes();let mut ans = 0;let mut left = 0;let mut window = vec![false; 128]; // 也可以用 HashSet,这里为了效率用的 Vecfor (right, &c) in chars.iter().enumerate() {let c = c as usize;while window[c] { // 加入 c 后,窗口内会有重复元素window[s[left] as usize] = false;left += 1;}window[c] = true;ans = ans.max(right - left + 1); // 更新窗口长度最大值}ans as i32}
}

链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/1959540/xia-biao-zong-suan-cuo-qing-kan-zhe-by-e-iaks/

Java

time O ( N ) O(N) O(N) mem O ( N ) O(N) O(N)

class Solution {public int lengthOfLongestSubstring(String s) {char[] chars = s.toCharArray(); // 转换成 char[] 加快效率(忽略带来的空间消耗)int n = chars.length, ans = 0, left = 0;boolean[] has = new boolean[128]; // 也可以用 HashSet<Character>,这里为了效率用的数组for (int right = 0; right < n; ++right) {char c = s[right];while (has[c]) // 加入 c 后,窗口内会有重复元素has[s[left++]] = false;has[c] = true;ans = Math.max(ans, right - left + 1); // 更新窗口长度最大值}return ans;}
}链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/1959540/xia-biao-zong-suan-cuo-qing-kan-zhe-by-e-iaks/

Go

time O ( N ) O(N) O(N) mem O ( N ) O(N) O(N)

func lengthOfLongestSubstring(s string) (ans int) {window := [128]bool{} // 也可以用 map,这里为了效率用的数组left := 0for right, c := range s {for window[c] { // 加入 c 后,窗口内会有重复元素window[s[left]] = falseleft++}window[c] = trueans = max(ans, right-left+1) // 更新窗口长度最大值}return
}func max(a, b int) int { if b > a { return b }; return a }链接:https://leetcode.cn/problems/longest-substring-without-repeating-characters/solutions/1959540/xia-biao-zong-suan-cuo-qing-kan-zhe-by-e-iaks/
http://www.lryc.cn/news/324159.html

相关文章:

  • int的大小你知道时4个字节,那么类的大小你知道怎么计算吗?
  • OpenCV学习笔记(十一)——利用Sobel算子计算梯度
  • 扩展一下BenchmarkSQL,新增支持ASE/HANA/DB2/SQLServer,可以随便用了
  • Android 静默安装成功后自启动
  • 计算机二级真题讲解每日一题:《format格式化》
  • RabbitMQ问题
  • flutter->Scaffold左侧/右侧侧边栏和UserAccountsDrawerHeader的使用
  • vulnhub prime1通关
  • JVM快速入门(1)JVM体系结构、运行时数据区、类加载器、线程共享和独享、分区、Java对象实例化
  • CSS3新属性(学习笔记)
  • 41-Vue-webpack基础
  • 数据仓库的分层理论
  • MySQL 8.0-索引- 不可见索引(invisible indexes)
  • Uibot6.0 (RPA财务机器人师资培训第3天 )财务招聘信息抓取机器人案例实战
  • Eureka和Nacos的关系
  • 极简自建web视频会议,私有云,rtmp/rtsp/webrtc一键参会直播会议互动方案
  • 5G智能网关助力工业铸造设备监测升级
  • 奇舞周刊第523期:来自 rust 生态的强烈冲击?谈谈 Leptos 在语法设计上的精妙之处...
  • 《边缘计算:连接未来的智慧之桥》
  • php 各种魔术函数的触发条件
  • Linux的学习之路:2、基础指令(1)
  • 0103设计算法-算法基础-算法导论第三版
  • [NCTF2019]SQLi ---不会编程的崽
  • 上位机开发 halcon坐标转轴坐标
  • [数据结构]二叉树(下)
  • 动手学深度学习|notebook教程
  • C#面:简述 .NET Framework 类库中的“命名空间”
  • android.os.TransactionTooLargeException解决方案,Kotlin
  • ChatGPT智能聊天系统源码v2.7.6全开源Vue前后端+后端PHP
  • 汇丰:当前的美股是泡沫吗?