如何用PHP和Golang来刷leetCode
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,如何用PHP和Golang来刷leetCode ,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方法一class Solution {
千家信息网最后更新 2025年12月02日如何用PHP和Golang来刷leetCode
如何用PHP和Golang来刷leetCode ,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。
方法一
class Solution { /** * @param String $s * @return Integer */ function lengthOfLongestSubstring($s) { if (strlen($s)==0) return 0; $map = []; $max = 0; $left = 0; for($i = 0; $i < strlen($s); $i++){ if(array_key_exists($s[$i],$map)){ $left = max($left, $map[$s[$i]] + 1); } $map[$s[$i]] = $i; $max = max($max,$i-$left+1); } return $max; }}方法二:
思路:逐个检查所有的子字符串,看它是否包含有重复的字符。
$str = "";function lengthOfLongestSubstring($s) {$strlen = strlen($s);if($strlen<=1){return $strlen;}$subStrlen = [];for($i=0;$i<$strlen;$i++){$subStrArr = [];$subStrArr[] = $s[$i];for($j=$i+1;$j<$strlen;$j++){$subStrArr[] = $s[$j];if(count(array_unique($subStrArr))!=count($subStrArr)){array_pop($subStrArr);break;}}$subStrlen = count($subStrArr)>count($subStrlen)?$subStrArr:$subStrlen;}return count($subStrlen);}$a = lengthOfLongestSubstring($str);print_r($a)
方法三
如果从索引 i 到 j - 1 之间的子字符串s[i,j)已经被检查为没有重复字符。我们只需要检查 s[j] 对应的字符是否已经存在于子字符串 s[i,j) 中。
function lengthOfLongestSubstring($s) { $len = strlen($s); if ($len < 2){ return $len; } $win = []; $res_len = 0; $i = 0; $j = 0; while ($i<$len && $j<$len){ if(!in_array($s[$i],$win)){ $win[]= $s[$i++]; $res_len = max($res_len,$i-$j);
}else{ $j++; array_shift($win); } } return $res_len; }嗯 简单试了一下 差不多是上面方法的20倍 并且随着字符串的长度增长会更大 因为他是O(n)
方法四:优化版滑动窗口
function lengthOfLongestSubstring($s){$len = strlen($s);$j = 0;$i = 0;$maxStrLen = 0;$set = [];while ($j<$len){if(array_key_exists($s[$j],$set)){$i = max($i,$set[$s[$j]]);}$maxStrLen = max($maxStrLen,$j-$i+1);$set[$s[$j]]=$j+1;$j++;}return $maxStrLen;}
使用Golang方法
package mainimport "fmt"//最长不含有重复字符的子串func lenthOfNonRepeatingSubstr(s string) int {lastOccurred := make(map[byte]int)start := 0maxLength := 0for i, ch := range []byte(s) {if lastI, ok := lastOccurred[ch]; ok && lastI >= start {start = lastI + 1}if i-start+1 > maxLength {maxLength = i - start + 1}lastOccurred[ch] = i}return maxLength}func main() {fmt.Println(lenthOfNonRepeatingSubstr("abcabcbb")) //3fmt.Println(lenthOfNonRepeatingSubstr("bbbbb")) //1fmt.Println(lenthOfNonRepeatingSubstr("pwwkew")) //3}
关于如何用PHP和Golang来刷leetCode 问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
字符
方法
字符串
问题
检查
更多
帮助
解答
易行
最长
差不多
简单易行
之间
内容
小伙
小伙伴
思路
知识
篇文章
索引
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
湖北通信软件开发推广
网络技术运用于在线课程
汽车公告数据库安利
软件开发996
电池放电数据库结构
韩城市第七届网络安全宣传周
公网访问服务器地址
网络安全工程师 黑客
TcL软件开发在几个城市
网络技术服务中心实践
美国的科技网络技术
json 数据库 教程
应用层的网络安全需求
成都软件开发园区
禄劝专业性软件开发价格信息
富途集团软件开发
长时间搞软件开发
网络安全存在的风险以及对策
车载网络技术期末
贵州dell服务器总代
上海自动化运维软件开发
电池放电数据库结构
云服务器搭建云盘
数据库取值不重怎么写
巨鹰网络技术有限公司怎么样
网络安全作品有奖
数据库服务器宕机排查报告
cnki数据库的字段代码
网络安全上机心得
和平精英平板是一个服务器吗