美文网首页每日打卡
2021-11-30 014 015 字符串中的所有变位词

2021-11-30 014 015 字符串中的所有变位词

作者: 16孙一凡通工 | 来源:发表于2021-11-30 15:26 被阅读0次

    常见字符串题目解题思路:

    1. 统计0-26的个数,在此基础上进行解题
      2.哈希表统计
      3.针对括号匹配、路径拆分等字符串题目采用栈或者队列

    这题符合第一种,同时采用了双指针,有点类似于滑动窗口。
    014,015思路一致

    Go版本:

    import "fmt"
    func checkInclusion(s1 string, s2 string) bool {
        // 有点类似于前缀和,但又不是前缀和
        // 双指针思路
        if len(s1)>len(s2){
            return false;
        }
    
    //    arr1:=make([]int,26);
    //     arr2:=make([]int,26);
        
           var arr1,arr2 [26]int
    
        for i:=0;i<len(s1);i++{
       arr1[int(s1[i]-'a')]++;
       arr2[int(s2[i]-'a')]++;
        }
        if arr1==arr2{
             return true;
                }
    
        for i:=len(s1);i<len(s2);i++{
       
                arr2[int(s2[i-len(s1)]-'a')]--;
                arr2[int(s2[i]-'a')]++;
                if arr1==arr2{
                    return true;
                }
        }
        // fmt.Println("那个地方");
        // fmt.Println(arr1);
        // fmt.Println(arr2);
        
        return false;
    }
    

    Go版本:

    func findAnagrams(s string, p string) []int {
    
        var  arr1,arr2 [26]int;
         var res []int;
        if len(s)<len(p){
             return res;
        }
    
        for i:=0;i<len(p);i++{
            arr1[int(p[i]-'a')]++;
            arr2[int(s[i]-'a')]++;
        }
       
        if arr1==arr2{
            res=append(res,0);
        }
        for i:=len(p);i<len(s);i++{
    
              arr2[int(s[i-len(p)]-'a')]--;
               arr2[int(s[i]-'a')]++;
               if arr1==arr2{
           res=append(res,i-len(p)+1);
               }
            
        }
        return res;
    }
    

    相关文章

      网友评论

        本文标题:2021-11-30 014 015 字符串中的所有变位词

        本文链接:https://www.haomeiwen.com/subject/bfqdxrtx.html