前端使用JavaScript解决检查字符串是否为数组前缀的算法问题

简介: 前端使用JavaScript解决检查字符串是否为数组前缀的算法问题

检查字符串是否为数组前缀


给你一个字符串 s 和一个字符串数组 words ,请你判断 s 是否为 words 的 前缀字符串 。

字符串 s 要成为 words 的 前缀字符串 ,需要满足:s 可以由 words 中的前 kk 为 正数 )个字符串按顺序相连得到,且 k 不超过 words.length

如果 swords 的 前缀字符串 ,返回 true ;否则,返回 false

示例 1:

输入: s = "iloveleetcode", words = ["i","love","leetcode","apples"]

输出: true

解释:s 可以由 "i"、"love" 和 "leetcode" 相连得到。

示例 2:

输入: s = "iloveleetcode", words = ["apples","i","love","leetcode"]

输出: false

解释:数组的前缀相连无法得到 s 。


解题思路


方法一:


我们可以按顺序遍历 words 中的字符串,并与 s 逐字符比较。如果遇到不同的字符,则返回 false。

同时,根据题意,当且仅当 swords 中任一字符串同时遍历结束时,s 才为 words 的前缀字符串。因此,如果遇到以下两种情况时,也应返回 false:

  • 在未遍历完成 words 的某个字符串时,s 提前遍历完成;
  • 在遍历完成words 的所有字符串后,s 仍未遍历完成。


方法二:


还有另一种比较好的方法就是:初始化一个标志result存放比较结果,再初始化一个空字符串用于存储数组拼接的新字符,遍历words进行拼接,每拼接一次都与s进行比较,如果相同则把result = true并且暂停遍历返回true,遍历到最后如果都不相同就返回false

具体步骤如下:

  • 第一步:初始化一个空字符串newS,一个result = false
  • 第二步:遍历字符串
  • 进行 newS+=words[i]拼接操作,再与s进行比较,如果为true,就令result = true并且终止遍历
  • 返回 比较结果
var isPrefixString = function(s, words) {
    let newS = ''
    let result = false
    for(let i=0;i<words.length;i++){
        newS+=words[i]
        if(newS === s){
            result = true
            return true
        }
    }
    return result
};


image.png


目录
相关文章
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。
【10月更文挑战第7天】随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 来检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这两个工具,可以确保代码风格一致,提升团队协作效率和代码质量。
230 2
|
3月前
|
算法
【算法】滑动窗口——找到字符串中所有字母异位词
【算法】滑动窗口——找到字符串中所有字母异位词
|
20天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码,包括安装插件、配置 ESLint 和 Prettier 以及 VSCode 设置的具体步骤。通过这些工具,可以显著提升编码效率和代码质量。
184 4
|
18天前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码
随着前端开发技术的快速发展,代码规范和格式化工具变得尤为重要。本文介绍如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查代码规范并自动格式化 Vue.js 代码。通过安装和配置这些工具,可以确保代码风格一致,提高代码质量和可读性。
49 1
|
1月前
|
算法
两个字符串匹配出最长公共子序列算法
本文介绍了最长公共子序列(LCS)问题的算法实现,通过动态规划方法求解两个字符串的最长公共子序列,并提供了具体的编程实现细节和示例。
77 1
两个字符串匹配出最长公共子序列算法
|
1月前
|
前端开发 JavaScript
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
乾坤qiankun(微前端)样式隔离解决方案--使用插件替换前缀
295 8
|
1月前
|
JavaScript 前端开发 开发者
如何在 VSCode 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升团队协作效率和代码质量。
【10月更文挑战第9天】随着前端开发技术的发展,代码规范和格式化工具变得至关重要。本文介绍如何在 VSCode 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升团队协作效率和代码质量。通过安装插件、配置 ESLint 和 Prettier,以及设置 VSCode,实现代码实时检查和格式化,确保代码风格一致。
29 2
|
1月前
|
JavaScript 前端开发 开发者
如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升代码质量和团队协作效率。
【10月更文挑战第8天】本文介绍了如何在 Visual Studio Code (VSCode) 中使用 ESLint 和 Prettier 检查并自动格式化 Vue.js 代码,提升代码质量和团队协作效率。通过安装 VSCode 插件、配置 ESLint 和 Prettier,实现代码规范检查和自动格式化,确保代码风格一致,提高可读性和维护性。
72 2
|
1月前
|
移动开发 算法 前端开发
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
前端常用算法全解:特征梳理、复杂度比较、分类解读与示例展示
21 0
|
2月前
|
前端开发 JavaScript
前端基础(十五)_时间对象、字符串对象
本文介绍了JavaScript中时间对象的操作方法,包括获取和设置年、月、日、小时、分钟、秒等,以及如何格式化时间显示,同时提及了字符串对象的常用方法。
31 0
前端基础(十五)_时间对象、字符串对象