力扣1662(java&python)-检查两个字符串数组是否相等(简单)
题目:
给你两个字符串数组 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)-检查两个字符串数组是否相等(简单)的更多相关文章
- Python 连接MongoDB并比较两个字符串相似度的简单示例
本文介绍一个示例:使用 pymongo 连接 MongoDB,查询MongoDB中的 字符串 记录,并比较字符串之间的相似度. 一,Python连接MongoDB 大致步骤:创建MongoClient ...
- java string截取两个字符串之间的值
java string截取两个字符串之间的值 import java.util.regex.Matcher; import java.util.regex.Pattern; public class ...
- Java 中如何计算两个字符串时间之间的时间差?(单位为分钟)
Java 中如何计算两个字符串时间之间的时间差?(单位为分钟) import java.text.DateFormat; import java.text.ParseException; import ...
- Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等-uncheck
ylbtech-Java-Runoob-高级教程-实例-字符串:10. Java 实例 - 测试两个字符串区域是否相等 1.返回顶部 1. Java 实例 - 测试两个字符串区域是否相等 Java ...
- java 算法之 两个字符串中最大相同的子串
public class String_intern { public static void main(String[] args) { String old="aaaaabc1" ...
- Python web前端 08 字符串 数组 json
Python web前端 08 字符串 数组 json 一.string #string 字符串 #索引 下标 偏移量 ---从0开始 str[index]; #通过索引取字符串 可读不可写 str. ...
- 力扣算法经典第一题——两数之和(Java两种方式实现)
一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...
- Python 比较两个字符串大小
python 2中,有cmp(a,b)函数,用于比较两个字符串的大小. 如 >>>a='abc' >>>b='abd' >>>print cmp( ...
- java中判断两个字符串是否相等的问题
我最近刚学java,今天编程的时候就遇到一个棘手的问题,就是关于判断两个字符串是否相等的问题.在编程中,通常比较两个字符串是否相同的表达式是“==”,但在java中不能这么写.在java中,用的是eq ...
- java操作对比两个字符串,将差异数据提取出来
记录瞬间 在实际的工作中,需要解决生成两次字符串结果进行对比的问题,将存在差异的字符串直接给出来. 当然,前提是需要将对比的两次结果,进行前期处理 比如: a_str = "@com/ene ...
随机推荐
- husky 7.0.4 git hooks 前端 commit 钩子 git转svn [已解决]
husky 7 的安装,注意下版本 第一步 安装 cnpm install husky@7.0.4 --save-dev 第二步 在package.json script加入 "prepar ...
- GoFrame 优化接口的错误码和异常的思路
前言 你是否想在使用 GoFrame 的过程中,拥有一个能打印异常堆栈,能自定义响应状态码,能统一处理响应数据的接口.如果你回答是,那么,请耐心看完本文,或许会对你有所启发.若文中由表达不当之处,恳请 ...
- 超低延时超低功耗的2.4G无线音频收发解决方案特色解析
为什么是我们? 团队从做芯片开始,一直在无线领域这个圈子里面混.从刚开始的wifi芯片,到后面的bt芯片,再到后面的音频算法,再到后面一起创业,做无线音频解决方案.随着和客户关系的逐渐深入,团队慢 ...
- day22--Java集合05
Java集合05 11.HashSet课堂练习 11.1课堂练习1 定义一个Employee类,该类包括:private成员属性name,age 要求: 创建3个Employee对象放入HashSet ...
- 一张图搞清楚wait、sleep、join、yield四者区别,面试官直接被征服!
写在开头 在线程的生命周期中,不同状态之间切换时,可以通过调用sleep().wait().join().yield()等方法进行线程状态控制,针对这一部分知识点,面试官们也会做做文章,比如问你这些方 ...
- 记录--前端中 JS 发起的请求可以暂停吗
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 在前端中,JavaScript(JS)可以使用XMLHttpRequest对象或fetch API来发起网络请求.然而,JavaScrip ...
- KingbaseES Json 系列七:Json记录操作函数二
KingbaseES Json 系列七--Json记录操作函数二(JSONB_POPULATE_RECORD,JSONB_POPULATE_RECORDSET,JSON_POPULATE_RECORD ...
- FineReport 常用日期公式
获取当前月份最后一天 DATEINMONTH(today(), -1) 获取当前月份第一天 DATEINMONTH(today(), 1) 获取上个月最后一天 DATEINMONTH(MONTHDEL ...
- Scala 惰性加载
1 package com.atguigu.chapter04 2 3 object Test_Lazy { 4 def main(args: Array[String]): Unit = { 5 l ...
- Java 包和 API 深度解析:组织代码,避免命名冲突
Java 包和 API Java 中的包 用于将相关的类分组在一起.可以将其视为文件目录中的一个文件夹.我们使用包来避免名称冲突,并编写更易于维护的代码. 包分为两类: 内置包(来自 Java API ...