5706. 句子相似性 III ###K //K

题目链接:https://leetcode-cn.com/problems/sentence-similarity-iii/

思路:考虑怎么写最少代码最快写完 假定s1是短串 s2是长串

那么就是要满足s1的前缀是s2的前缀,s1的后缀也要是s2的后缀

那么匹配一次前缀匹配一次后缀 用下标i j 记录 当i>j 的时候 说明 长串的前后缀已经覆盖了 短串 即符合题意

可以用stringstream 读取出来单词 更快

 1 class Solution {
 2     #define pb push_back
 3 public:
 4     bool areSentencesSimilar(string s1, string s2) {
 5         if(s1.size()>s2.size()) swap(s1,s2);
 6         stringstream ss1(s1),ss2(s2);
 7         string s;
 8         vector<string>a,b;
 9         while(ss1>>s) a.pb(s);
10         while(ss2>>s) b.pb(s);
11         int i=0,j=a.size()-1;
12         for(int k=0;k<b.size()&&i<a.size();k++)
13         {
14             if(a[i]==b[k]) i++;
15             else break;
16         }
17         for(int k=b.size()-1;k>=0&&j>=0;k--)
18         {
19             if(a[j]==b[k]) j--;
20             else break;
21         }
22         return i>j;
23     }
24 };
View Code

 

posted @ 2021-04-04 19:40  canwinfor  阅读(125)  评论(0编辑  收藏  举报