题目描述:
一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格。比方说,“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 。

示例 1:
输入:sentence1 = “My name is Haley”, sentence2 = “My Haley”
输出:true
解释:可以往 sentence2 中 “My” 和 “Haley” 之间插入 “name is” ,得到 sentence1 。

示例 2:
输入:sentence1 = “of”, sentence2 = “A lot of words”
输出:false
解释:没法往这两个句子中的一个句子只插入一个句子就得到另一个句子。

示例 3:
输入:sentence1 = “Eating right now”, sentence2 = “Eating”
输出:true
解释:可以往 sentence2 的结尾插入 “right now” 得到 sentence1 。

示例 4:
输入:sentence1 = “Luky”, sentence2 = “Lucccky”
输出:false

提示:
1 <= sentence1.length, sentence2.length <= 100
sentence1 和 sentence2 都只包含大小写英文字母和空格。
sentence1 和 sentence2 中的单词都只由单个空格隔开。

方法1:
主要思路:解题链接汇总
(1)模拟;

class Solution {public:void get_word(string&str,vector<string>&words){//将字符串中的各个单词分割出来存储string word;for(char&ch:str){if(ch==' '){words.push_back(word);word="";}else{word+=ch;}}words.push_back(word);}bool areSentencesSimilar(string sentence1, string sentence2) {vector<string>words_1;vector<string>words_2;//获得原谅两个句子的单词组成get_word(sentence1,words_1);get_word(sentence2,words_2);if(words_1.size()>words_2.size()){//确定需要插入的句子swap(words_1,words_2);}if(words_1.size()==0){return true;}if(words_1[0]!=words_2[0]&&words_1.back()!=words_2.back()){//说明一定不符合要求return false;}//从头开始int index1=0;while(index1<words_1.size()&&words_1[index1]==words_2[index1]){++index1;}//从末尾开始int index2=words_1.size()-1,tmp=words_2.size()-1;while(index2>=0&&words_1[index2]==words_2[tmp]){--index2;--tmp;}//遍历完短的单词词组return index2<index1;}
};

//go语言实现

func getWord(str *string)[]string{words := []string{}word :=""for _,ch:=range (*str) {if ch==' ' {words=append(words,word)word=""}else{word+=string(ch)}}return append(words,word)
}
func areSentencesSimilar(sentence1 string, sentence2 string) bool {words_1:=getWord(&sentence1)words_2:=getWord(&sentence2)if len(words_1)>len(words_2) {words_1,words_2=words_2,words_1}if len(words_1)==0 {return true}if words_1[0]!=words_2[0]&&words_1[len(words_1)-1]!=words_2[len(words_2)-1]{return false}index1:=0for index1<len(words_1)&&words_1[index1]==words_2[index1] {index1++}index2:=len(words_1)-1tmp :=len(words_2)-1for index2>=0&&words_1[index2]==words_2[tmp] {index2--tmp--}return index1>index2
}

1813 句子相似性 III相关推荐

  1. LeetCode 1813. 句子相似性 III

    文章目录 1. 题目 2. 解题 1. 题目 一个句子是由一些单词与它们之间的单个空格组成,且句子的开头和结尾没有多余空格. 比方说,"Hello World" ,"HE ...

  2. Enhanced-RCNN: 一种高效的比较句子相似性的方法 |​WWW 2020

    作者 | 彭爽 出品 | AI科技大本营(ID:rgznai100) 国际顶级会议WWW2020将于4月20日至24日举行.始于1994年的WWW会议,主要讨论有关Web的发展,其相关技术的标准化以及 ...

  3. 开源nlp自然语言处理 word2vec nltk textblob crf++ 机器人、翻译、简繁转换、分词、词性、词向量、关键词主题、命名体识别、语义分析、情感正负面、近义同义词、句子相似性、聚类

    github开源:https://github.com/lhyxcxy/nlp 说明 本例子主要集成各种nlp框架 主要功能如下 (1)自动问答机器人 (2)中文翻译,及繁体转简体 (3)关键词提取, ...

  4. CNN在句子相似性建模的应用--tensorflow实现篇2

    =======================更新=========================== 这段时间有很多人反映在跑代码的时候会出现NAN的错误,由于本人最近忙着找实习和实习,所以一直没 ...

  5. LeetCode 737. 句子相似性 II(并查集)

    文章目录 1. 题目 2. 解题 1. 题目 给定两个句子 words1, words2 (每个用字符串数组表示),和一个相似单词对的列表 pairs ,判断是否两个句子是相似的. 例如,当相似单词对 ...

  6. LeetCode 734. 句子相似性(哈希)

    文章目录 1. 题目 2. 解题 1. 题目 给定两个句子 words1, words2 (每个用字符串数组表示),和一个相似单词对的列表 pairs ,判断是否两个句子是相似的. 例如,当相似单词对 ...

  7. 双指针(Double Pointer)

    双指针 [209. 长度最小的子数组](https://leetcode.cn/problems/minimum-size-subarray-sum/) [713. 乘积小于 K 的子数组](http ...

  8. 【NLP】文献翻译1——基于结构和词嵌入的文本相似性测量方法

    Measuring text similarity based on structure and word embedding 摘要 1. 简介 2. 相关工作 3. 句子相似性 3.1 基于结构的相 ...

  9. Prompt+对比学习,更好地学习句子表征

    每天给你送来NLP技术干货! 作者 | 王嘉宁@华师数据学院 整理 | NewBeeNLP https://wjn1996.blog.csdn.net/article/details/12552885 ...

最新文章

  1. 最大识车数据集:6.4万张车型参数完整标注,交通安防二手都能用
  2. 逆向学习技术!拆解驱动器,学习布局走线技术
  3. 新兴机器学习算法:在线学习
  4. 95. Unique Binary Search Trees II
  5. apache camel_Apache Camel请向我解释这些端点选项的含义
  6. APUE 线程的分离状态
  7. access百度翻译 get_求助,百度翻译后我还是不知道怎么解决这个问题
  8. 「搬文工」Mac Finder 右键快速新建、复制、移动文件工具
  9. matlab实现图像滤波——高斯滤波
  10. VOC2007和VOC2012数据集下载地址
  11. 利用APPInventor开发手机APP,实现OBLOQ-IOT与Arduino设备通信
  12. 计算机ROM指什么意思,ROM是什么 刷ROM是什么意思
  13. C盘Temp文件夹的内容可以删掉
  14. kibana Dev Tools语句查询简单使用入门
  15. PDF文件添加水印怎么添加?分享两种加水印方法
  16. CSDN修改专栏名字
  17. 开发环境搭建:Python(x,y) + Wing IDE4.0.3以及破解
  18. GRNN神经网络学习笔记_matlab
  19. 冯诺依曼结构图-2020-09-05
  20. Greenplum——基于Greenplum-Spark Connector的Spark脚本开发及遇到的坑

热门文章

  1. MYSQL 大于号,小于号
  2. teamviewer检测为商业用途 5分钟后关闭解决方法
  3. 解密QQ号(stl库)
  4. HTML+CSS+移动端前端
  5. python 数据库框架peewee_python peewee模块使用
  6. 12092009小记
  7. GOCAD 2009 完整版功能强大的三维地质建模软件
  8. 微信小程序——点赞和取消点赞功能的实现
  9. JavaScript 日期操作我不知道的事情
  10. GraphPad Prism的八种数据表格式