美文网首页
1662. 检查两个字符串数组是否相等(难度:简单)

1662. 检查两个字符串数组是否相等(难度:简单)

作者: 一直流浪 | 来源:发表于2022-12-20 19:14 被阅读0次

    题目链接:https://leetcode.cn/problems/check-if-two-string-arrays-are-equivalent/

    题目描述:

    给你一个字符串数组 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 <= 10^3
    • 1 <= word1[i].length, word2[i].length <= 10^3
    • 1 <= sum(word1[i].length), sum(word2[i].length) <= 10^3
    • word1[i]word2[i] 由小写字母组成

    解法一:双指针

    利用两个指针,分别指向两个字符串数组的下标,再利用两个下标,分别执行遍历到的元素的下标,移动四个指针,判断字符串数组的所有字符是否相同。

    代码:

    class Solution {
        public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
            int a = 0, b = 0;
            int i = 0, j = 0;
            int len1 = word1.length;
            int len2 = word2.length;
            boolean flag = false;
            while (a < len1 && b < len2) {
                String w1 = word1[a];
                String w2 = word2[b];
                flag = false;
    
                if (i >= w1.length()) {
                    i = 0;
                    a++;
                    flag = true;
                }
                if (j >= w2.length()) {
                    j = 0;
                    b++;
                    flag = true;
                }
                if(flag) {
                    continue;
                }
                if (w1.charAt(i) == w2.charAt(j)) {
                    i++;
                    j++;
                } else {
                    return false;
                }
            }
            if (a == len1 && b == len2 && i == 0 && j == 0) {
                return true;
            }
            return false;
        }
    }
    

    解法二:连接字符串

    分别连接两个字符串数组生成两个 字符串,比较最终的字符串是否相同。

    代码:

    class Solution {
        public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
            return join(word1).equals(join(word2));
        }
    
        public String join(String[] words) {
            StringBuilder ret = new StringBuilder();
            for (String s : words) {
                ret.append(s);
            }
            return ret.toString();
        }
    }
    

    相关文章

      网友评论

          本文标题:1662. 检查两个字符串数组是否相等(难度:简单)

          本文链接:https://www.haomeiwen.com/subject/jerpqdtx.html