LeetCode第216场周赛

本文解析了LeetCode第216场周赛的四道题目,包括检查字符串数组是否相等、最小数值字符串、平衡数组方案数和完成任务的最少初始能量问题,分别采用直接比较、贪心策略进行解题。
摘要由CSDN通过智能技术生成

题目:5605. 检查两个字符串数组是否相等

给你两个字符串数组 word1word2 。如果两个数组表示的字符串相同,返回 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] 由小写字母组成

思路:

比较连个字符串:循环两个字符串单个比较是否相等

而这题可以将这两个字符串数组拼接成一个字符串比较。

不拼接:

用两个变量表示数组的下标,然后遍历两个数组的每个字符串,遇到不同的直接返回false,当一个字符串走到了尾,就将数组下标往后移一位。

class Solution {
   
    public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
   
        int i1 = 0;
        int i2 = 0;
        int n1 = word1.length;
        int n2 = word2.length;
        int j1 = 0;
        int j2 = 0;
        while(i1 < n1 && i2 < n2){
   
            while(j1 < word1[i1].length() && j2 < word2[i2].length()) {
   
                if(word1[i1].charAt(j1) != word2[i2].charAt(j2)) return false;
                j1++;
                j2++;
            }
            if(j1 == word1[i1].length()) {
   
                i1++;
                j1 = 0;
            }
            if(j2 == word2[i2].length()) {
   
                i2++;
                j2 = 0;
            }
        }
        return true;
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值