给定一个字符串,请你找出其中不含有重复字符的最长子串的长度。
示例 1:
输入: “abcabcbb”
输出: 3
解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。
示例 2:
输入: “bbbbb”
输出: 1
解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。
示例 3:
输入: “pwwkew”
输出: 3
解释: 因为无重复字符的最长子串是 “wke”,所以其长度为 3。
要注意字符串为空、变量为null、字符串长度 length = 1 等情况。
测试实例
输入" ""au""abcabcbb""bbbbb""pwwkew""aab"预期结果分别是 1,2,3,1,3,2
代码格式模板
public class solution { public int lengthoflongestsubstring(string s) { }}
使用最笨的方式,200ms左右
public class solution { public int lengthoflongestsubstring(string s) { if (s == null || s == "") return 0; 串并联电路 char[] a = s.tochararray(); //字符串转为字符数组 int start = 0; //区间开始位置 int stop = 0; //区间结束位置 int newmax = 1; //当前区间数 int max = 1; //区间最大个数 for (stop = 1; stop < a.length; stop++) //每次向后移动一位 { bool b = fal; //是否存在重复 for (int i = start; i < stop; i++) //检查当前元素在区间是否有相同值 { if (a[stop] == a[i]) //如果stop+1位在区间找到相同的字符 { char ls = a[stop]; if (newmax > max) max = newmax; start = i + 1; //区间开始位置重置 newmax = stop - start + 1; b = true; break; } } if (b == fal) 德育总结 newmax += 1; } if (newmax > max) max = newmax; return max; }}
using system;namespace consoleapp1{ public class testa { public int lengthoflongestsubstring(string s) { if (s == null || s == "") return 0; char[] a = s.tochararray(); //字符串转为字符数组 int start = 0; //区间开始位置 int stop = 0; //区间结束位置 int newmax = 1; //当前区间数 int max = 1; //区间最大个数 for (stop = 1; stop < a.length; stop++) //每次向后移动一位 { bool b = fal; //是否存在重复 for (int i = start; i < stop; i++) //检查当前元素在区间是否有相同值 { if (a[stop] == a[i]) //如果stop+1位在区间找到无头无尾一亩田相同的字符 { char ls = a[stop]; if (newmax > max) max = newmax; start = i + 1; //区间开始位置重置 生产安全法 newmax = stop - start + 1; //重新设置区间数 b = true; break; } } if (b == fal) ////没有重新设置区间数时加1 newmax += 1; } if (newmax > max) max = newmax; return max; } } class program { static void main(string[] args) { testa t1 = new testa(); //正确结果 console.writeline(t1.lengthoflongestsubstring(" ")); //1 console.writeline(t1.lengthoflongestsubstring("au")); //2 console.writeline(t1.lengthoflongestsubstring("abcabcbb")); //3 console.writeline(t1.lengthoflongestsubstring("bbbbb")); //1 console.writeline(t1.lengthoflongestsubstring("pwwkew")); //3 console.writeline(t1.lengthoflongestsubstring("aab")); //2 console.readkey(); } }}
public int lengthoflongestsubstring(string s) { int n = s.length; hasht<char> t = new hasht<char>(); //集合 int ans = 0, start = 0, stop = 0; //ans为字符串长度,starp区间起点,stop区间终点 while (start < n && stop < n) { // try to extend the range [i, j] if (!t.contains(s[stop])) { t.add(s[stop++]); ans = math.max(ans, stop - start); //或者ans = ans > (stop - start) ? ans : (stop - start) } el { t.remove(s[start++]); } } return ans; }
using system;using system.collections.generic;using system.linq;namespace consoleapp2{ public class solution { public int lengthoflongestsubstring(string s) { int n = s.length; hasht<char> t = new hasht<char>(); //集合 int ans = 0, start = 0, stop = 0; //ans为字符串长度,starp区间起点,stop区间终点 while (start < n && stop < n) { // try to extend the range [i, j] if (!t.contains(s[stop])) { t.add(s[stop++]); ans = math.max(ans, stop - start); //或者ans = ans > (stop - start) ? ans : (stop - start) } el { t.remove(s[start++]); } } return ans; } } class program 四年级上册寒假作业答案 { static void main(string[] args) { solution t1 = new solution(); //正确结果 console.writeline(t1.lengthoflongestsubstring(" ")); //1 console.writeline(t1.lengthoflongestsubstring("au")); //2 console.writeline(t1.lengthoflongestsubstring("abcabcbb")); //3 console.writeline(t1.lengthoflongestsubstring("bbbbb")); //1 console.writeline(t1.lengthoflongestsubstring("pwwkew")); //3 console.writeline(t1.lengthoflongestsubstring("aab")); //2 console.readkey(); } }}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持www.887551.com。
本文发布于:2023-04-04 14:30:21,感谢您对本站的认可!
本文链接:https://www.wtabcd.cn/fanwen/zuowen/397501597924e1b8dc1ae09f5e6fbdea.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文word下载地址:C#算法之无重复字符的最长子串.doc
本文 PDF 下载地址:C#算法之无重复字符的最长子串.pdf
留言与评论(共有 0 条评论) |