• 检查两个字符串数组是否相等


    题目链接

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

    题目描述

    注意

    • word1[i] 和 word2[i] 由小写字母组成
    • 1 <= word1[i].length, word2[i].length <= 103
    • word1和 word2都是由一个或多个字符串组成的数组

    解答思路

    • 要满足题意,首先要保证word1和 word2的字符总长度是相同的,但是由于本体word1和 word2都是由一个或多个字符串组成的数组,所以无法直接比较长度,应该先将word1中的所有元素都添加到一个字符串中,再按顺序检查相应位置的元素是否相同
    • 这种方法容易出错的同时所占用的空间并不会比对两个字符串数组都进行遍历添加到新的字符串中再进行比较少,所以直接用方法二更好

    代码

    方法一:

    class Solution {
        public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
            StringBuilder sb = new StringBuilder();
            for(int i = 0; i < word1.length; i++) {
                sb.append(word1[i]);
            }
            int count = sb.length();
            int idx = 0;
            for(int i = 0; i < word2.length; i++) {
                int n = word2[i].length();
                // word2的字符串总长度比word1长
                if(idx + n > count) return false;
                if(!word2[i].equals(sb.substring(idx, idx + n))) return false;
                idx = idx + n;
            }
            // word1的字符串总长度比word2长
            if(idx != count) return false;
            return true;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    方法二:

    class Solution {
        public boolean arrayStringsAreEqual(String[] word1, String[] word2) {
            return join(word1).equals(join(word2));
        }
    
        public String join(String[] word) {
            StringBuilder sb = new StringBuilder();
            for(String s : word) {
                sb.append(s);
            }
            return sb.toString();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    关键点

    • 在遍历的过程中要防止越界造成的错误,也就是word2的长度比word1的长度大时不做处理的话会发生越界
    • 在遍历完后,还要判断word1是否遍历完,不做处理的话word1比word2长且前部分相同时会判断错误
  • 相关阅读:
    Open3D学习笔记
    [论文阅读]Voxel R-CNN——迈向高性能基于体素的3D目标检测
    3、线性代数
    命令执行漏洞——系统命令执行
    向Zookeeper中注册内容以及从zookeeper中发现内容
    订单及其状态机的设计实现
    Vue环境安装报错汇总
    Webpack打包图片
    我的创作纪念日
    echarts
  • 原文地址:https://blog.csdn.net/weixin_51628158/article/details/127642286