题目:

给你两个字符串数组 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. 基于ads1292心电数据存储和状态显示

    一 前记 ads1292芯片在专业的心电采集这块应用十分广泛.随着医疗可穿戴的发展,便携式心电测量这块前景十分广阔.基于现在的几个项目,团队在这里花费了不少精力,借此机会把这个方向打造成团队的特色之一 ...

  2. Djaong 运行报错:ValueError: Unable to configure handler 'default'

    一.前提条件 1.Django 项目接入了 log 日志模块 二.解决方案 启动项目或者项目运行中,遇到如下报错 File "C:\Python38\lib\logging\config.p ...

  3. 瑞云科技荣获全国电子信息行业专精特新“最具创新价值 TOP20”!

    "专精特新",从概念提出到写入政府工作报告走过了十年.这十年来我国促进中小企业发展力度之大.出台政策之密集.含金量之高前所未有,足见走专精特新发展之路深入人心."专精特新 ...

  4. java方法的内存及练习

    方法的内存 一.方法调用的基本内存原理: Java内存分配 栈: 方法运行时使用的内存方法进栈运行,运行完毕就出栈 堆: newl出来的,都在堆内存中开辟了一个小空间 方法区: 存储可以运行的clas ...

  5. FreeRTOS教程7 事件组

    1.准备材料 正点原子stm32f407探索者开发板V2.4 STM32CubeMX软件(Version 6.10.0) Keil µVision5 IDE(MDK-Arm) 野火DAP仿真器 XCO ...

  6. npm ERR! code ENOENT npm ERR! syscall open npm ERR! path C:\Users\shuzi\Desktop\保密文件项目\test-ui/package.json npm ERR! errno -4058

    打开一个新的项目,因为当前项目文件夹下没有npm,"dev": "npm run start:dev",所以所以没有展示对应的运行图,如下图: 打开一个新的前端 ...

  7. 记录--你不知道的forEach函数

    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 老实说我不喜欢用forEach,因为它导致的一些bug总是这么不经意,盘点我不喜欢的原因 原因一:不支持处理异步函数 先看一个例子: as ...

  8. PowerDesigner操作要点

    一.PowerDesigner解决name和code同步问题 工具-常规选项-General  Options-Dialog-Name to Code mirroring√去掉 二.PowerDesi ...

  9. 温馨提示:不注意这几点,PDT(产品开发团队)就得散!

    在IPD(集成产品开发)体系中,PDT(Product Development Team,产品开发团队)发挥着至关重要的作用.PDT是一个跨部门.跨职能的协作团队,其成员来自不同的专业领域,包括研发. ...

  10. Android记账本界面实现

    <!--activity_main.xml-->1 <?xml version="1.0" encoding="utf-8"?> 2 & ...