如何用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 问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注创新互联行业资讯频道了解更多相关知识。
网站栏目:如何用PHP和Golang来刷leetCode
浏览地址:http://www.jxjierui.cn/article/ghcdos.html


咨询
建站咨询
