(54)检查两个字符串数组是否相等


每日一言

什么都不用想,干脆把自己交给生活。不用担心,生活自会把你冲到彼岸,立定脚跟的。


题目

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


解题思路

法一:

字符串拼接法
首先,创建两个字符数组 str1 和 str2,分别用于存储拼接后的字符串。

将 str1 和 str2 数组初始化为空,并且长度为 1001。

进入第一个 for 循环,遍历 word1 字符串数组,通过 strcat 函数将每个字符串依次拼接到 str1 数组中。

进入第二个 for 循环,遍历 word2 字符串数组,通过 strcat 函数将每个字符串依次拼接到 str2 数组中。

对 str1 和 str2 数组进行字符串的比较,使用 strcmp 函数,如果返回值等于 0,表示两个字符数组相同,即两个字符串数组相同,返回 true;否则,返回 false。

法二:

使用双指针法,
首先,我们通过创建指针 p1 和 p2 分别指向 word1 和 word2 的首个元素,来处理字符串数组。

创建四个变量 i1、j1、i2、j2 分别用于追踪 p1 和 p2 当前位置的索引。

进入一个循环,在循环中进行以下操作:

每次循环开始时,检查当前位置的字符是否相同,即 p1[i1][j1] 是否等于 p2[i2][j2]。如果不相同,说明两个字符串数组不相同,返回 false。

将 j1 递增,以便追踪下一个字符。

如果 p1[i1][j1] 的值为 ‘\0’,说明已经处理完了当前字符串,需要开始处理下一个字符串,将 i1 递增、j1 重置为 0。

将 j2 递增,以便追踪下一个字符。

如果 p2[i2][j2] 的值为 ‘\0’,说明已经处理完了当前字符串,需要开始处理下一个字符串,将 i2 递增、j2 重置为 0。

当前位置的字符相同,且还未处理完两个字符串数组中的所有字符串时,继续进行下一次循环。

循环结束后,检查是否已经处理完了两个字符串数组中的所有字符串,即 i1 == word1Size 和 i2 == word2Size 是否成立。如果成立,说明两个字符串数组相同,返回 true;否则,返回 false。

代码

法一:

bool arrayStringsAreEqual(char** word1, int word1Size, char** word2, int word2Size) {
    char str1[1001] = {0};
    char str2[1001] = {0};
    for(int i=0;i<word1Size;i++)
        strcat(str1,word1[i]);
    for(int i=0;i<word2Size;i++)
        strcat(str2,word2[i]);

    return (strcmp(str1,str2) == 0);
}

法二:

bool arrayStringsAreEqual(char** word1, int word1Size, char** word2, int word2Size) {
    char** p1 = word1;
    char** p2 = word2;
    int i1 = 0;
    int j1 = 0;
    int i2 = 0;
    int j2 = 0;
    while(i1 < word1Size && i2 < word2Size) {
        if(p1[i1][j1] != p2[i2][j2]) {
            return false;
        }
        j1++;
        if(p1[i1][j1] == '\0') {
            i1++;
            j1 = 0;
        }
        j2++;
        if(p2[i2][j2] == '\0') {
            i2++;
            j2 = 0;
        }
    }

    return i1 == word1Size && i2 == word2Size;
}

结语

请给自己些耐心,一口吃不成胖子。
山外青山楼外楼,莫把百尺当尽头。
保持空杯心态加油努力吧!


都看到这里啦!真棒(*^▽^*)

可以给作者一个免费的赞赞吗,这将会鼓励我继续创作,谢谢大家

编程小白写作,如有纰漏或错误,欢迎指正


判断两个字符串数组是否相等,可以有多种方法。引用\[1\]和引用\[2\]提供了两种不同的解决方案。引用\[1\]中的解决方案使用了两个指针来遍历两个字符串数组,并逐个比较字符是否相等。如果有任何一个字符不相等,则返回false。如果循环结束后没有出错,则比较字符串数组组成的字符串总长度是否相等,如果相等则返回true,否则返回false。引用\[2\]中的解决方案则是将两个字符串数组拼接成两个字符串,然后直接比较这两个字符串是否相等。如果相等则返回true,否则返回false。引用\[3\]中的解决方案也是将两个字符串数组拼接成两个字符串,然后直接比较这两个字符串是否相等。如果相等则返回true,否则返回false。所以,根据这些解决方案,可以判断两个字符串数组是否相等。 #### 引用[.reference_title] - *1* *2* *5* [1662. 检查两个字符串数组是否相等](https://blog.csdn.net/m0_62008860/article/details/127636460)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* *4* [检查两个字符串数组是否相等](https://blog.csdn.net/qq_36400210/article/details/110048603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

月临水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值