如何用PHP和Golang来刷leetCode
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,如何用PHP和Golang来刷leetCode ,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方法一class Solution {
千家信息网最后更新 2026年11月01日如何用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安全错误
数据库的锁怎样保障安全
广州万易互联网科技有限公司
华服互联网科技怎么样
互联网科技工作委员会主任
厦门中拓互联网络科技有限公司
互联网科技会
深圳互联网科技公司
嘟嘟瓜互联网科技
互联网科技ppt模板
润盈互联网科技
互联网科技咨询
昊天互联网科技有限公司
语蝶互联网科技有限公司
广州市恰铎互联网科技有限公司
华夏恒生互联网科技013171
中科明德北京互联网科技
广州千川互联网科技有限公司
图游互联网科技
安徽零酒互联网科技有限公司
互联网科技创业有什么好项目
互联网科技企业文化
什么是科技互联网
中国互联网科技股
互联网科技的英文
亿策互联网科技
互联网金融科技创新
科技创新互联网企业
互联网科技商业
特约风豹互联网科技为什么扣费
众安科技工业互联网合作
互联网界的黑科技