2022-10-25 Daily Challenge

Today I have done leetcode's October LeetCoding Challenge with cpp.

October LeetCoding Challenge 25

Description

Check If Two String Arrays are Equivalent

Given two string arrays word1 and word2, return true if the two arrays represent the same string, and false otherwise.

A string is represented by an array if the array elements concatenated in order forms the string.

 

Example 1:

Input: word1 = ["ab", "c"], word2 = ["a", "bc"]
Output: true
Explanation:
word1 represents string "ab" + "c" -> "abc"
word2 represents string "a" + "bc" -> "abc"
The strings are the same, so return true.

Example 2:

Input: word1 = ["a", "cb"], word2 = ["ab", "c"]
Output: false

Example 3:

Input: word1  = ["abc", "d", "defg"], word2 = ["abcddefg"]
Output: true

 

Constraints:

  • 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] and word2[i] consist of lowercase letters.

Solution

class Solution {
public:
  bool arrayStringsAreEqual(vector<string>& word1, vector<string>& word2) {
    int i1 = 0, i2 = 0, s1 = 0, s2 = 0;
    int len1 = word1.size(), len2 = word2.size();
    while(i1 < len1 && i2 <len2) {
      if(word1[i1][s1] != word2[i2][s2]) return false;
      s1 += 1;
      if(s1 == word1[i1].length()) s1 = 0, i1 += 1;
      s2 += 1;
      if(s2 == word2[i2].length()) s2 = 0, i2 += 1;
    }
    if(i1 != len1 || i2 != len2) return false;
    return true;
  }
};

// Accepted
// 109/109 cases passed (3 ms)
// Your runtime beats 93.69 % of cpp submissions
// Your memory usage beats 89.94 % of cpp submissions (11.4 MB)