前端算法-删除字符串中的所有相邻重复项

简介: 前端算法-删除字符串中的所有相邻重复项

题目

给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们,在 S 上反复执行重复项删除操作,直到无法继续删除,在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

输入:"abbaca"
输出:"ca"
解释:
例如,在 "abbaca" 中,我们可以删除 "bb" 由于两字母相邻且相同,这是此时唯一可以执行删除操作的重复项。之后我们得到字符串 "aaca",其中又只有 "aa" 可以执行重复项删除操作,所以最后的字符串为 "ca"。

解析

根据题意我们这里肯定会使用到循环,所以这里先声明一个stack变量,它是一个空数组,也是我们所用的栈,然后再声明一个str变量,这个是用于存储我们最后的返回结果,然后我们使用循环,每次循环都会去删除数组中的最后一个字符,删除的字符用prve变量存储,然后再拿删除的字符和当前循环中的字符进行判断是否相等,如果不相等则把prve变量值和当前循环中的字符利用push方法添加到栈里面,如果相等则什么都不做进行下一次循环,第一次进入循环,stack变量数组为空,所以什么也不会删除,在进行比较的时候,第一个字符肯定是不相等的,所以第一个字符就入栈了,然后我们在进入第二次循环,第二次循环stack数组中是有值的,我们用prve变量存储删除的字符,在拿prve变量和当前循环中的字符进行比较,通过对比结果为不相等,所以进行入栈操作,然后进行第三次循环,第三次循环中将prve变量和当前循环中的字符进行对比,通过对比结果为相等所以我们什么操作都不做,以此往复,循环结束后,我们在利用join方法将stack变量变为字符串存储到str变量中,最后返回出去

/**
 * @param {string} s
 * @return {string}
 */
var removeDuplicates = function(s) {
let stack=[];
let str='';
for(v of s){
    let prve=stack.pop();
    if(prve!=v){
     stack.push(prve)
     stack.push(v)
    }
}
str=stack.join('');
return str;
};

坚持努力,无惧未来!

相关文章
|
5月前
|
前端开发
前端使用正则表达式检查是否为十六进制字符串
前端使用正则表达式检查是否为十六进制字符串
113 6
|
搜索推荐 前端开发 数据可视化
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
本文介绍了一个基于Django框架、协同过滤算法、ECharts数据可视化以及Bootstrap前端技术的酒店推荐系统,该系统通过用户行为分析和推荐算法优化,提供个性化的酒店推荐和直观的数据展示,以提升用户体验。
560 1
【优秀python web毕设案例】基于协同过滤算法的酒店推荐系统,django框架+bootstrap前端+echarts可视化,有后台有爬虫
|
算法
【算法】滑动窗口——找到字符串中所有字母异位词
【算法】滑动窗口——找到字符串中所有字母异位词
174 0
|
10月前
|
机器学习/深度学习 前端开发 算法
婚恋交友系统平台 相亲交友平台系统 婚恋交友系统APP 婚恋系统源码 婚恋交友平台开发流程 婚恋交友系统架构设计 婚恋交友系统前端/后端开发 婚恋交友系统匹配推荐算法优化
婚恋交友系统平台通过线上互动帮助单身男女找到合适伴侣,提供用户注册、个人资料填写、匹配推荐、实时聊天、社区互动等功能。开发流程包括需求分析、技术选型、系统架构设计、功能实现、测试优化和上线运维。匹配推荐算法优化是核心,通过用户行为数据分析和机器学习提高匹配准确性。
698 5
|
算法
两个字符串匹配出最长公共子序列算法
本文介绍了最长公共子序列(LCS)问题的算法实现,通过动态规划方法求解两个字符串的最长公共子序列,并提供了具体的编程实现细节和示例。
260 1
两个字符串匹配出最长公共子序列算法
|
搜索推荐 前端开发 算法
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
本文介绍了一个基于用户画像和协同过滤算法的音乐推荐系统,使用Django框架、Bootstrap前端和MySQL数据库构建,旨在为用户提供个性化的音乐推荐服务,提高推荐准确性和用户满意度。
886 7
基于用户画像及协同过滤算法的音乐推荐系统,采用Django框架、bootstrap前端,MySQL数据库
|
前端开发 JavaScript Java
【前端学java】详解java中的字符串操作(11)
【8月更文挑战第10天】详解java中的字符串操作
87 3
【前端学java】详解java中的字符串操作(11)
|
算法 前端开发
一文了解贪心算法和回溯算法在前端中的应用
该文章深入讲解了贪心算法与回溯算法的原理及其在前端开发中的具体应用,并通过分析LeetCode题目来展示这两种算法的解题思路与实现方法。
|
算法 前端开发 机器人
一文了解分而治之和动态规则算法在前端中的应用
该文章详细介绍了分而治之策略和动态规划算法在前端开发中的应用,并通过具体的例子和LeetCode题目解析来说明这两种算法的特点及使用场景。
一文了解分而治之和动态规则算法在前端中的应用
|
前端开发 JavaScript
前端基础(十五)_时间对象、字符串对象
本文介绍了JavaScript中时间对象的操作方法,包括获取和设置年、月、日、小时、分钟、秒等,以及如何格式化时间显示,同时提及了字符串对象的常用方法。
153 0
前端基础(十五)_时间对象、字符串对象

热门文章

最新文章