• 滑动窗口


    func SlideWindow(s, t string){
    	mp:=map[byte]int{}
    	window:=map[byte]int{}//window是[left,right)区间内的的哈希表
    	//根据目标串构建哈希表
    	for i:=0;i<len(t);i++{
    		mp[t[i]]++
    	}
    	left,right:=0,0
    	valid:=0
    	for right<len(s){
    		//c是将要移入窗口的字符
    		c:=s[right]
    		//右移窗口
    		right++
    		//进行窗口数据的更新
    
    		/*** debug 输出的位置 ***/
    		fmt.Printf("window:[d%,d%]",left,right)
    		//判断左侧窗口是否要收缩
    		for 判断条件{
    			// d 是将移出窗口的字符
    			d:=s[left]
    			// 左移窗口
    			left++
    			// 进行窗口内数据的⼀系列更新
    
    		}
    	}
    }
    

      实例:力扣76题

    func minWindow(s string, t string) string {
        start,end:=0,len(s)*2
        mp:=map[byte]int{}
        window:=map[byte]int{}
    	//根据目标串构建哈希表
    	for i:=0;i<len(t);i++{
    		mp[t[i]]++
    	}
    	left,right:=0,0
    	valid:=0
    	for right<len(s){
    		//c是将要移入窗口的字符
    		c:=s[right]
    		//右移窗口
    		right++
    		//进行窗口数据的更新
            window[c]++
            if mp[c]==window[c]{
                valid++
            }
    
    		//判断左侧窗口是否要收缩
    		for valid==len(mp){
                 //更新最小子串
                if right-left<end-start{
                    start=left
                    end=right
                }
    			// d 是将移出窗口的字符
    			d:=s[left]
    			// 左移窗口
    			left++
               
    			// 进行窗口内数据的⼀系列更新
                if val,ok:=mp[d];ok{//判断是否更新valid
                    if window[d]==val{
                        valid--
                    }
              window[d]-- } } } if end-start>len(s){ return "" } return s[start:end] }

      实例:力扣3题

    func lengthOfLongestSubstring(s string) int {
        n:=len(s)
        res:=0
        k:=0
        i:=0
        for ;i<n;i++{
            for j:=k;j<i;j++{
                if s[j]==s[i]{
                    if res<i-k{
                        res=i-k
                    }
                    k=j+1
                    break
                }
            } 
        }
        if i==n{
            if res<i-k{
                res=i-k
            }
        }
        return res
    }
  • 相关阅读:
    windows防火墙失效
    unity_animator_stop_replay(重新播放)
    使用rider做为unity的代码编辑器
    分母为0的坑(float)
    动画或特效不会播放(被裁剪)
    UGUI在两个UI间坐标转换
    informix 查看 当前锁表
    java protected 与默认权限的区别
    Java 定时任务
    在线支付
  • 原文地址:https://www.cnblogs.com/mango1997/p/16013102.html
Copyright © 2020-2023  润新知