如何用PHP和Golang来刷leetCode
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,如何用PHP和Golang来刷leetCode ,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。方法一class Solution {
千家信息网最后更新 2025年02月03日如何用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 main
import "fmt"
//最长不含有重复字符的子串
func lenthOfNonRepeatingSubstr(s string) int {
lastOccurred := make(map[byte]int)
start := 0
maxLength := 0
for 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")) //3
fmt.Println(lenthOfNonRepeatingSubstr("bbbbb")) //1
fmt.Println(lenthOfNonRepeatingSubstr("pwwkew")) //3
}
关于如何用PHP和Golang来刷leetCode 问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。
字符
方法
字符串
问题
检查
更多
帮助
解答
易行
最长
差不多
简单易行
之间
内容
小伙
小伙伴
思路
知识
篇文章
索引
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
长沙东塔网络安全学院免费试学
简单搜索软件开发
kis后装数据库
软件开发薪资最高的
浏览器网络安全插件
数据库事务划分原则
重庆大数据软件开发价钱
列车网络技术的发展现状ppt
宁波电信服务器地址
南宁北部湾软件开发
专科软件开发毕业工资
现在公司上网是通过服务器吗
网络安全技术哪些权威证书
xx医院网络安全领导小组
通达信更新数据库
数据库atm机管理系统
部队网赌网贷网络安全教育
达梦数据库公司 知乎
切糕服务器视频
网络技术的该从事什么职业
速保网络技术有限公司
河南智慧社区软件开发
网易我的世界20人服务器多少钱
泉州网络安全工程师
地理信息数据库创建
涪陵周边软件开发培训
小学网络安全教育教学设计
战神引擎点服务器就就返回主界面
医院信息系统与网络安全
打开服务器管理工具