LeetCode 30 Substring with Concatenation of All Words

红太狼 2021-12-03 04:57 244阅读 0赞

题目

食之无味的题目

  1. class Solution {
  2. public:
  3. map<string,int> m;
  4. map<int,string> m2;
  5. map<string,int> m3;
  6. int b[100005];
  7. int c[100005];
  8. vector<int> findSubstring(string s, vector<string>& words) {
  9. vector<int> ans;
  10. if(words.size()==0)
  11. return ans;
  12. if(s.length()==0)
  13. return ans;
  14. for(int i=0;i<words.size();i++)
  15. {
  16. m[words[i]]++;
  17. }
  18. int len = words[0].length();
  19. int index=0;
  20. for(int i=0;i<s.length();i++)
  21. {
  22. string a="";
  23. for(int k=i;k<i+len && k<s.length();k++)
  24. {
  25. a+=s[k];
  26. }
  27. if(m[a]!=0)
  28. {
  29. b[i]=m[a];
  30. m2[i]=a;
  31. c[index++]=i;
  32. }
  33. }
  34. for(int i=0;i<index;i++)
  35. {
  36. m3.clear();
  37. m3[m2[c[i]]]++;
  38. int j=i;
  39. int k=i+1;
  40. int x=1;
  41. int tag=1;
  42. if(s.length()-c[i] < len * words.size())
  43. break;
  44. while(j<index&&k<index)
  45. {
  46. if(c[k]-c[j]<len)
  47. {
  48. k++;
  49. continue;
  50. }
  51. else if(c[k]-c[j]==len)
  52. {
  53. int y=++m3[m2[c[k]]];
  54. if(y>m[m2[c[k]]])
  55. {
  56. tag=0;
  57. break;
  58. }
  59. else
  60. {
  61. x++;
  62. j=k;
  63. k++;
  64. if(x==words.size())
  65. {
  66. tag=1;
  67. break;
  68. }
  69. }
  70. }
  71. else{
  72. break;
  73. }
  74. }
  75. if(x<words.size())
  76. {
  77. tag=0;
  78. }
  79. if(tag==1)
  80. ans.push_back(c[i]);
  81. }
  82. return ans;
  83. }
  84. };

转载于:https://www.cnblogs.com/dacc123/p/11196898.html

发表评论

表情:
评论列表 (有 0 条评论,244人围观)

还没有评论,来说两句吧...

相关阅读