1662.检查两个字符串数组是否相等
题目描述
给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。
数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。
示例图片
解题思路
双指针:
- 本题为简单题,只需使用两个指针,循环比较下去即可。由于word1和word2的数组内字符串长度并不相同,我们可以判断指针是否指向’\0’,一旦指向’\0’,这说明该数组下标内的字符串访问完毕,随机进入下一个数组下标的字符串,并将指针赋为0,继续循环下去。
- 最后注意一些边界条件,当退出循环,即有一个数组全部访问完毕之后,还需要判断另一个数组是否还有值,有值则说明字符串不相等。
代码
bool arrayStringsAreEqual(char ** word1, int word1Size, char ** word2, int word2Size){
int p1,p2; p1=p2=0;
int i,j; i=j=0;
while(i<word1Size && j<word2Size){
while(word1[i][p1]!='\0' && word2[j][p2]!='\0'){
if(word1[i][p1]!=word2[j][p2]){ return false; }
p1++; p2++;
}
if(word1[i][p1]=='\0'){ i++;p1=0; }
if(word2[j][p2]=='\0'){ j++;p2=0; }
}
if(p1!=0 || p2!=0 || i<word1Size || j<word2Size){ return false; }
return true;
}