leetcode-1662:检查两个字符串数组是否相等

简介: leetcode-1662:检查两个字符串数组是否相等

题目

题目连接

给你两个字符串数组 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

解题

方法一:拼接+比较

过于简单,就不写了, 这种方法会浪费 存储拼接结果的空间

方法二:四个指针

k1,k2分别指向word1,word2中的字符串

i,j分别指向k1,k2指向字符串中具体的字符

class Solution {
public:
    bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) {
        int n1=word1.size(),n2=word2.size();
        int k1=0,k2=0;//k1,k2分别表示word1,word2中第几个字符串
        int i=0,j=0;//word1、word2中每个字符串中的索引
        while(k1<n1||k2<n2){
            if(k1>=n1||k2>=n2) return false;
            if(word1[k1][i]!=word2[k2][j]) return false;
            i++;
            j++;
            while(k1<n1&&i==word1[k1].size()){ //while是为了防止空字符串
                k1++;
                i=0;
            }
            while(k2<n2&&j==word2[k2].size()){
                k2++;
                j=0;
            }
        }
        return true;
    }
};
相关文章
|
1天前
|
算法
leetcode代码记录(寻找两个正序数组的中位数
leetcode代码记录(寻找两个正序数组的中位数
9 2
|
1天前
|
索引
leetcode代码记录(最长重复子数组
leetcode代码记录(最长重复子数组
5 0
|
1天前
leetcode代码记录(两个数组的交集
leetcode代码记录(两个数组的交集
7 1
|
1天前
leetcode代码记录(最大子数组和
leetcode代码记录(最大子数组和
8 2
|
1天前
|
存储 算法 安全
【刷题】 leetcode 面试题 01.06 字符串压缩
来看效果: 非常好!!!过啦!!!
22 5
|
2天前
leetcode代码记录(删除字符串中的所有相邻重复项
leetcode代码记录(删除字符串中的所有相邻重复项
8 0
|
4天前
|
存储 算法
Leetcode 30天高效刷数据结构和算法 Day1 两数之和 —— 无序数组
给定一个无序整数数组和目标值,找出数组中和为目标值的两个数的下标。要求不重复且可按任意顺序返回。示例:输入nums = [2,7,11,15], target = 9,输出[0,1]。暴力解法时间复杂度O(n²),优化解法利用哈希表实现,时间复杂度O(n)。
16 0
|
1天前
|
算法 C++
【刷题】Leetcode 1609.奇偶树
这道题是我目前做过最难的题,虽然没有一遍做出来,但是参考大佬的代码,慢慢啃的感觉的真的很好。刷题继续!!!!!!
6 0
|
1天前
|
算法 索引
【刷题】滑动窗口精通 — Leetcode 30. 串联所有单词的子串 | Leetcode 76. 最小覆盖子串
经过这两道题目的书写,相信大家一定深刻认识到了滑动窗口的使用方法!!! 下面请大家继续刷题吧!!!
7 0

热门文章

最新文章