首页 > 其他分享 >⌈力扣⌋删除字符串中的所有相邻重复项

⌈力扣⌋删除字符串中的所有相邻重复项

时间:2023-06-03 11:32:31浏览次数:33  
标签:删除 重复 力扣 相邻 let 数组 字符串 操作

题目


给出由小写字母组成的字符串  S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。

在 S 上反复执行重复项删除操作,直到无法继续删除。

在完成所有重复项删除操作后返回最终的字符串。答案保证唯一。

示例:

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

提示:

1 <= S.length <= 20000
S 仅由小写英文字母组成。

解题思路

  1. 声明一个 数组变量 用来存放结果
  2. 循环字符串
  3. 依次把单个字符 放到数组中,如果数组的最后一项等于当前插入的则移除数组的最后一项
  4. 最后用数组的 join 方法得到最后的字符串

具体代码

/**
 * @param {string} S
 * @return {string}
 */
const removeDuplicates = function (S) {
    let s = [];
    let j = -1;
    for (let i of S) {
        if (s[j] === i) {
            s.pop();
            j--;
        } else {
            s.push(i);
            j++;
        }
    }
    return s.join("");
};



标签:删除,重复,力扣,相邻,let,数组,字符串,操作
From: https://blog.51cto.com/jikun/6407639

相关文章

  • Java 计算数学表达式(字符串解析求值工具)
    Java字符串转换成算术表达式计算并输出结果,通过这个工具可以直接对字符串形式的算术表达式进行运算,并且使用非常简单。这个工具中包含两个类Calculator和ArithHelperCalculator代码如下:importjava.util.Collections;importjava.util.Stack;/***算数表达式求值*......
  • 为什么说 Go 语言字符串是不可变的?
    原文链接:为什么说Go语言字符串是不可变的?最近有读者留言说,平时在写代码的过程中,是会对字符串进行修改的,但网上都说Go语言字符串是不可变的,这是为什么呢?这个问题本身并不困难,但对于新手来说确实容易产生困惑,今天就来回答一下。首先来看看它的底层结构:typestringStructst......
  • Leetcode 2559. 统计范围内的元音字符串数
    题目:给你一个下标从0开始的字符串数组words以及一个二维整数数组queries。每个查询queries[i]=[l,r]会要求我们统计在words中下标在l到r范围内(包含这两个值)并且以元音开头和结尾的字符串的数目。返回一个整数数组,其中数组的第i个元素对应第i个查询的答案......
  • C++字符串分割和C语言常用格式控制
    C++string的输出格式控制输出一个字符串:左对齐,字宽为10,空格填充1.strings;2.cin>>s;3.cout<<std::left<<setw(10)<<setfill('*')<<s<<endl;输入:love输出效果:love******C++string字符流字符分割技巧输入一行字符串,然后按某个字符分割成若干子串1.strings;......
  • shell遍历当前目录下的文件,用去掉文件后缀的字符串替换文件中的文本
    今天写了一个shell,遍历当前目录下的文件,用每个文件的文件名去掉后缀的字符串替换文件中的一段字符串。 脚本如下:#!/bin/bashfile=`ls*.html`;echo$fileforitemin$filedofilename=${item%.*}echo$filenamesed-i"s/search('channel')/search('${fi......
  • Java 将字符串转换为Document对象
    可以使用JAXP(JavaAPIforXMLProcessing)提供的DocumentBuilder类将字符串数据转换成Document对象。具体步骤如下:1.创建一个DocumentBuilderFactory对象,用于创建DocumentBuilder对象。DocumentBuilderFactoryfactory=DocumentBuilderFactory.newInstance();2.创建一个D......
  • 经典C语言模拟字符串库操作
    1.模拟strcpy(字符串拷贝函数)#define_CRT_SECURE_NO_WARNINGS1#include<stdio.h>#include<stdlib.h>#include<assert.h>char*my_strcpy(char*dest,constchar*src){char*pc=dest;assert(src);assert(dest);while(*de......
  • Java官方笔记5数字和字符串
    NumbersNumber的子类:另外还有BigDecimal和BigInteger,用于高精度计算,AtomicInteger和AtomicLong用于多线程应用。我们有时候需要用包装类而非基本数据类型,理由如下:方法入参类型为Object,只能传入对象使用包装类提供的常量,比如MIN_VALUE和MAX_VALUE使用包装类的方法来做......
  • 算法——字符串(一)
    1、给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。1classSolution{2publicintlengthOfLongestSubstring(Strings){3intlen=s.length();4intmax=0;5intright=0;6Set<Character>set=new......
  • 剑指 Offer 67. 把字符串转换成整数
    题目描述:写一个函数StrToInt,实现把字符串转换成整数这个功能。不能使用atoi或者其他类似的库函数。 首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合......