题解 | #牛牛的串联子串游戏#

牛牛的串联子串游戏

https://www.nowcoder.com/practice/c1984371372b43f3b10bf6d0231520bb

#include <unordered_map>
#include <vector>
class Solution {
public:

    vector<int> findSubstring(string s, vector<string>& words) {
        int len = s.size() ; 
        int n = words.size() , m = words[0].size() ;

        // 滑动窗口
        unordered_set<string> us , tt;
        for(string& w : words ) tt.insert( w ) ; 

        int l = 0 ; 
        vector<int> res; 
        for(int r = 0  ;r< len  ; r+=m  ){
            string seg = s.substr(r, m) ; 
            if( tt.count( seg ) == 0 ){
                us.clear(); 
                l = r+m ; 
                continue; 
            } 
            
            while( l < r && us.count( seg ) ){
                us.erase(  s.substr(l , m ) ) ; 
                l+=m ;
            }
            us.insert( seg ) ;
            if( us.size() == n ){
                res.push_back( l ) ; 
            }  
        }
        return res; 
    }
};

全部评论

相关推荐

点赞 评论 收藏
分享
积极的小学生不要香菜:你才沟通多少,没500不要说难
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务