<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          用 PHP和Golang 來(lái)刷leetCode 之 無(wú)重復(fù)字符 最長(zhǎng)子串

          共 778字,需瀏覽 2分鐘

           ·

          2020-08-15 13:26

          精選文章

          免費(fèi)獲取Git GO Java視頻教程
          Go語(yǔ)言生成二維碼是如此簡(jiǎn)單

          漲見(jiàn)識(shí)| 字節(jié)PHP/Golang社招面經(jīng)

          一文讓你知道為什么學(xué)了PHP的都要轉(zhuǎn)學(xué)Go語(yǔ)言



          方法一

          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;    }}


          方法二:

          思路:逐個(gè)檢查所有的子字符串,看它是否包含有重復(fù)的字符。

          $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)已經(jīng)被檢查為沒(méi)有重復(fù)字符。我們只需要檢查 s[j] 對(duì)應(yīng)的字符是否已經(jīng)存在于子字符串 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; }


          嗯 簡(jiǎn)單試了一下 差不多是上面方法的20倍 并且隨著字符串的長(zhǎng)度增長(zhǎng)會(huì)更大? 因?yàn)樗荗(n)??


          方法四:優(yōu)化版滑動(dòng)窗口

            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"//最長(zhǎng)不含有重復(fù)字符的子串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}

          瀏覽 47
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  做爰 视频毛片下载蜜桃视频 | 牛牛影视av | 欧美成人操B网站 | 激情视频久久 | 一级黄色电影免费看 |