题目:

给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。

数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。

示例 1:

输入:word1 = ["ab", "c"], word2 = ["a", "bc"]
输出:true
解释:
word1 表示的字符串为 "ab" + "c" -> "abc"
word2 表示的字符串为 "a" + "bc" -> "abc"
两个字符串相同,返回 true
示例 2:

输入:word1 = ["a", "cb"], word2 = ["ab", "c"]
输出:false
示例 3:

输入:word1 = ["abc", "d", "defg"], word2 = ["abcddefg"]
输出:true

提示:

  • 1 <= word1.length, word2.length <= 103
  • 1 <= word1[i].length, word2[i].length <= 103
  • 1 <= sum(word1[i].length), sum(word2[i].length) <= 103
  • word1[i] 和 word2[i] 由小写字母组成

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/check-if-two-string-arrays-are-equivalent
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、字符串拼接

直接将两个数组中的字符串进行拼接,然后再比较两个字符串是否相等。

java代码:

 1 class Solution {
2 public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
3 StringBuilder sb1 = new StringBuilder();
4 StringBuilder sb2 = new StringBuilder();
5 for(int i = 0; i < word1.length; i++){
6 sb1.append(word1[i]);
7 }
8 for(int i = 0; i < word2.length; i++){
9 sb2.append(word2[i]);
10 }
11 return sb1.toString().equals(sb2.toString());
12 }
13 }

代码优化:

1 class Solution {
2 public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
3 return String.join("", word1).equals(String.join("", word2));
4 }
5 }

二、遍历

设置两个指针w1和w2,分别表示遍历到 word1[w1] 和 word2[w2] ,另外设置两个指针 i 和 j,表示 word1[w1][i] 和 word2[w2][j] ,如果 word1[w1][i] 不等于 word2[w2][j],直接返回false.否则,就是相等,让i + 1,如果 i == word1[w1].length(),说明已经遍历到 w1的末尾。需要遍历下一个字符串了,这时让w1+1,i 重置为0,j与i同样处理。最终判断条件:w1 == word1.length && w2 == word2.length,成立返回true,不成立返回false。

java代码:

 1 class Solution {
2 public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
3 int w1 = 0, i = 0;
4 int w2 = 0, j = 0;
5 while(w1 < word1.length && w2 < word2.length){
6 if(word1[w1].charAt(i) != word2[w2].charAt(j)){
7 return false;
8 }
9 i++;
10 //当一个单词遍历结束后,遍历下一个单词,重置i
11 if(i == word1[w1].length()){
12 i = 0;
13 w1++;
14 }
15 j++;
16 //当一个单词遍历结束后,遍历下一个单词,重置j
17 if(j == word2[w2].length()){
18 j = 0;
19 w2++;
20 }
21 }
22 return w1 == word1.length && w2 == word2.length;
23 }
24 }

 python3代码:

 1 class Solution:
2 def arrayStringsAreEqual(self, word1: List[str], word2: List[str]) -> bool:
3 w1 = w2 = i = j = 0
4 while w1 < len(word1) and w2 < len(word2):
5 if word1[w1][i] != word2[w2][j]:
6 return False
7 i += 1
8 if i == len(word1[w1]):
9 w1 += 1
10 i = 0
11 j += 1
12 if j == len(word2[w2]):
13 w2 += 1
14 j = 0
15 return w1 == len(word1) and w2 == len(word2)

力扣1662(java&python)-检查两个字符串数组是否相等(简单)的更多相关文章

  1. Python 连接MongoDB并比较两个字符串相似度的简单示例

    本文介绍一个示例:使用 pymongo 连接 MongoDB,查询MongoDB中的 字符串 记录,并比较字符串之间的相似度. 一,Python连接MongoDB 大致步骤:创建MongoClient ...

  2. java string截取两个字符串之间的值

    java string截取两个字符串之间的值 import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...

  3. Java 中如何计算两个字符串时间之间的时间差?(单位为分钟)

    Java 中如何计算两个字符串时间之间的时间差?(单位为分钟) import java.text.DateFormat; import java.text.ParseException; import ...

  4. Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等-uncheck

    ylbtech-Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等 1.返回顶部 1. Java 实例 - 测试两个字符串区域是否相等  Java ...

  5. java 算法之 两个字符串中最大相同的子串

    public class String_intern { public static void main(String[] args) { String old="aaaaabc1" ...

  6. Python web前端 08 字符串 数组 json

    Python web前端 08 字符串 数组 json 一.string #string 字符串 #索引 下标 偏移量 ---从0开始 str[index]; #通过索引取字符串 可读不可写 str. ...

  7. 力扣算法经典第一题——两数之和(Java两种方式实现)

    一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...

  8. Python 比较两个字符串大小

    python 2中,有cmp(a,b)函数,用于比较两个字符串的大小. 如 >>>a='abc' >>>b='abd' >>>print cmp( ...

  9. java中判断两个字符串是否相等的问题

    我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...

  10. java操作对比两个字符串,将差异数据提取出来

    记录瞬间 在实际的工作中,需要解决生成两次字符串结果进行对比的问题,将存在差异的字符串直接给出来. 当然,前提是需要将对比的两次结果,进行前期处理 比如: a_str = "@com/ene ...

随机推荐

  1. WPF之模板

    目录 模板的内涵 数据的外衣DataTemplate UserControl例子 DataTemplate例子 控件的外衣 ControlTemplate 解剖控件 ItemsControl的Pane ...

  2. stm32 使用多串口通信调试总结

    前记:   stm32使用多个串口通信,这个项目遇到了不少问题,值得反思和深入总结一下.   提纲:  这次的问题,主要有几个部分组成: A 多串口的DMA配置,这个需要注意,尽量不要使用同一个DMA ...

  3. python 文件操作常用方法

    一 python文件创建 import os import argparse def file_write(file_name,msg): f = open(file_name,"a&quo ...

  4. vue入门教程之-属性、事件和双向绑定

    vue入门教程之-属性.事件和双向绑定 欢迎关注博主公众号「java大师」, 专注于分享Java领域干货文章, 关注回复「资源」, 免费领取全网最热的Java架构师学习PDF, 转载请注明出处 htt ...

  5. day04-原生的API&注解方式

    原生的API&注解方式 1.MyBatis原生的API调用 1.1原生API快速入门 需求:在前面的项目基础上,使用MyBatis原生的API完成,即直接通过SqlSession接口的方法来完 ...

  6. Java基础知识篇01——Java基本介绍

    一.什么是 Java Java 是 Sun Microsystems 于 1995 年首次发布的一种编程语言和计算平台.编程语言还是比较好理解的,什么是计算平台呢? 计算平台是电脑中运行应用程序(软件 ...

  7. 22_播放器之使用SDL显示YUV视频

    简介 使用SDL实现简单的YUV播放器. 这里还需要使用到像素格式和计算图片大小,这两个我们直接使用ffmpeg来实现,因此需要使用ffmpeg的libavutil/avutil.h和libavuti ...

  8. Android优化总结

    目录介绍 1.OOM和崩溃优化 1.1 OOM优化 1.2 ANR优化 1.3 Crash优化 2.内存泄漏优化 2.0 动画资源未释放 2.1 错误使用单利 2.2 错误使用静态变量 2.3 han ...

  9. 三维模型3DTile格式轻量化在三维展示效果上的重要性分析

    三维模型3DTile格式轻量化在三维展示效果上的重要性分析 三维模型3DTile格式轻量化在三维展示效果上扮演着至关重要的角色.随着计算机图形学和虚拟现实技术的不断发展,我们已经可以创建和渲染非常精细 ...

  10. ElasticSearch8 - SpringBoot整合ElasticSearch

    前言 springboot 整合 ES 有两种方案,ES 官方提供的 Elasticsearch Java API Client 和 spring 提供的 [Spring Data Elasticse ...