zoukankan      html  css  js  c++  java
  • LeetCode 30 Substring with Concatenation of All Words

    题目

    食之无味的题目

    class Solution {
    public:
        map<string,int> m;
        map<int,string> m2;
        map<string,int> m3;
        int b[100005];
        int c[100005];
        vector<int> findSubstring(string s, vector<string>& words) {
            
            
            vector<int> ans;
            if(words.size()==0)
                return ans;
            if(s.length()==0)
                return ans;
             for(int i=0;i<words.size();i++)
             {
                 m[words[i]]++;
             }
            
            int len = words[0].length();
            int index=0;
             for(int i=0;i<s.length();i++)
             {
                 string a="";
                 for(int k=i;k<i+len && k<s.length();k++)
                 {
                     a+=s[k];
                 }
                 
                 if(m[a]!=0)
                 {
                     b[i]=m[a];
                     m2[i]=a;
                     c[index++]=i;
                 }
             }
            
             for(int i=0;i<index;i++)
             {
                 m3.clear();
                 m3[m2[c[i]]]++;
                 int j=i;
                 int k=i+1;
                 int x=1;
                 int tag=1;
                 
                 if(s.length()-c[i] < len * words.size())
                     break;
                 while(j<index&&k<index)
                 {
                     if(c[k]-c[j]<len)
                     {
                        k++;
                        continue;
                     }
                     else if(c[k]-c[j]==len)
                     {
                         int y=++m3[m2[c[k]]];
                         if(y>m[m2[c[k]]])
                         {
                             tag=0;
                             break;
                         }
                         else
                         {
                             x++;
                             j=k;
                             k++;
                             if(x==words.size())
                             {
                                 tag=1;
                                 break;
                             }
                         }
                     }
                     else{
                         break;
                     }
                 }
                 if(x<words.size())
                 {
                     tag=0;
                 }
                 
                 if(tag==1)
                     ans.push_back(c[i]); 
             }
            
            return ans;
            
        }
        
       
    };
    
  • 相关阅读:
    二叉树的遍历
    98验证二叉搜索树
    104二叉树的最大深度
    101对称二叉树
    100相同的树
    递归算法
    52N皇后II
    51N皇后
    90子集II
    526优美的排列
  • 原文地址:https://www.cnblogs.com/dacc123/p/11196898.html
Copyright © 2011-2022 走看看