懈怠了欸现在是晚上,写一下今天的力扣
唉果然就是需要去有一个休息的放松的时间每天绷紧果然效率低下
QAQ今天的学习计划的题之前已经完成了
那我写啥QAQ
1813. 句子相似性 III
一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,“Hello World” ,“HELLO” ,“hello world hello world” 都是句子。每个单词都 只 包含大写和小写英文字母。
如果两个句子 sentence1 和 sentence2 ,可以通过往其中一个句子插入一个任意的句子(可以是空句子)而得到另一个句子,那么我们称这两个句子是 相似的 。比方说,sentence1 = “Hello my name is Jane” 且 sentence2 = “Hello Jane” ,我们可以往 sentence2 中 “Hello” 和 “Jane” 之间插入 “my name is” 得到 sentence1 。
给你两个句子 sentence1 和 sentence2 ,如果 sentence1 和 sentence2 是相似的,请你返回 true ,否则返回 false 。
写了好久T~T
一开始的错误思路
class Solution {
public:
bool areSame(vector<string> sentence1,vector<string> sentence2)
{
int index=0,index2=0,cnt=0;
int n=sentence1.size(),m=sentence2.size();
vector<int>v;
if(m==1)
return sentence2[0]==sentence1[0]||sentence2[0]==sentence1[n-1];
while(index<n&&index2<m)
{
if(sentence1[index]==sentence2[index2])
{
v.push_back(1);
index++;
index2++;
}
else
{
v.push_back(0);
index++;
}
}
if(index2<m)
return false;
while(index<n)
{
v.push_back(0);
index++;
}
int i=0;
while(i<v.size())
{
while(i<v.size()&&v[i])
i++;
if(i<v.size())
cnt++;
while(i<v.size()&&!v[i])
i++;
}
cout<<cnt<<endl;
return cnt<=1;
}
vector<string> toStrArr(string a)
{
vector<string>res;
string t="";
for(char i:a)
{
if(i==' ')
{
res.push_back(t);
t=string();
}
else
t+=i;
}
if(t!="")
res.push_back(t);
return res;
}
bool areSentencesSimilar(string sentence1, string sentence2) {
vector<string>s1,s2;
s1=toStrArr(sentence1);
s2=toStrArr(sentence2);
return s1.size()>s2.size()?areSame(s1,s2):areSame(s2,s1);
}
};
重新思考
三种情况
中间插入句子
后面插入句子
前方插入句子
class Solution {
public:
bool areSame(vector<string> sentence1,vector<string> sentence2)
{
int n=sentence1.size(),m=sentence2.size();
if(m==1)
return sentence2[0]==sentence1[0]||sentence2[0]==sentence1[n-1];
int r=m-1,l=0,i=n-1,j=0;
while(i>=0&&r>=0&&sentence2[r]==sentence1[i])
{
i--;
r--;
}
while(j<n&&l<m&&sentence2[l]==sentence1[j])
{
j++;
l++;
}
return l>r;
}
vector<string> toStrArr(string a)
{
vector<string>res;
string t="";
for(char i:a)
{
if(i==' ')
{
res.push_back(t);
t=string();
}
else
t+=i;
}
if(t!="")
res.push_back(t);
return res;
}
bool areSentencesSimilar(string sentence1, string sentence2) {
vector<string>s1,s2;
s1=toStrArr(sentence1);
s2=toStrArr(sentence2);
return s1.size()>s2.size()?areSame(s1,s2):areSame(s2,s1);
}
};
过了不容易啊