leetcode 1047 双出字符串中的相邻元素
简介
如果能想到栈的话,说明你的基础足够扎实。
我没有想到,我想到的是双向链表。我就是一个弟弟
思路
两个前后指针指向一个双向循环链表,然后判断是否相等相等的话,前一个指针前移,后一个指针后移,中间的删除。
code
#include <vector>
#include <queue>
#include <string>
#include <algorithm>
#include <string.h>
using namespace std;
#define ll long long
#define mod (long long)(1e9+7)
class Solution1047 {
public:
struct node {
char val;
node * pre;
node * last;
};
string removeDuplicates(string S) {
// Rebuild the structure
node *head = new node();
node *p = nullptr;
head->val = 255;
head->pre = nullptr;
head->last = nullptr;
for(int i=0; i<S.size(); i++) {
node * t = new node();
t->val = S[i];
if(i == 0) {
t->pre = head;
t->last = nullptr;
head->last = t;
}else {
t->pre = p;
t->last = nullptr;
p->last = t;
}
p = t;
}
p->last = head;
bool check = true;
node * q = head->last;
p = head->last->last;
node * t = nullptr;
while(!(p == head)) {
if(p->val == q->val) {
t = q;
q = q->pre;
delete(t);
t = p;
p = p->last;
delete(t);
q->last = p;
p->pre = q;
}else{
q = q->last;
p = p->last;
}
}
string rlt;
t = head->last;
while(t!=head) {
rlt.push_back((char)t->val);
t = t->last;
}
if(rlt.length() == 0) rlt = "";
return rlt;
}
};
参考链接
https://leetcode-cn.com/problems/remove-all-adjacent-duplicates-in-string/solution/zhan-jing-dian-ti-mu-si-lu-qing-xi-cjian-ji-dai-ma/
给出的解决方案就是用栈来实现解决方案,简单直接明了
code
class Solution {
public:
string removeDuplicates(string S) {
string result;
for(char s : S) {
if(result.empty() || result.back() != s) {
result.push_back(s);
}
else {
result.pop_back();
}
}
return result;
}
};
leetcode 1047 双出字符串中的相邻元素的更多相关文章
- Java实现 LeetCode 777 在LR字符串中交换相邻字符(分析题)
777. 在LR字符串中交换相邻字符 在一个由 'L' , 'R' 和 'X' 三个字符组成的字符串(例如"RXXLRXRXL")中进行移动操作.一次移动操作指用一个"L ...
- 剑指Offer 找出字符串中第一个只出现一次的字符
题目描述 找出字符串中第一个只出现一次的字符 如果无此字符 请输出'.' 输入描述: 输入一串字符,由小写字母组成 输出描述: 输出一个字符 输入例子: asdfasdfo 输出例子: o 思路:数组 ...
- php读取出字符串中的img标签中的图片路径
php读取出字符串中的img标签中的图片路径 $pageContents = '字符串,带img标签'; $pageContents = str_replace('\"','"', ...
- 找出字符串中第一个不重复的字符(JavaScript实现)
如题~ 此算法仅供参考,小菜基本不懂高深的算法,只能用最朴实的思想去表达. //找出字符串中第一个不重复的字符 // firstUniqueChar("vdctdvc"); --& ...
- C++版 - 剑指Offer 面试题35:第一个只出现一次的字符 解题报告(华为OJ034-找出字符串中第一个只出现一次的字符)
面试题35:第一个只出现一次的字符 题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b.(2006年google的一道笔试题.) 分析: 首先应向确认一下是ASCII字 ...
- vue过滤出字符串中的汉字,match加正则
vue过滤出字符串中的汉字,match加正则 str="23申迪MTN001(102380026)";str.match(/[\u4e00-\u9fa5]/g).join(&quo ...
- 9.11排序与查找(三)——给定一个排序后的数组,包括n个整数,但这个数组已被旋转过多次,找出数组中的某个元素
/** * 功能:给定一个排序后的数组.包括n个整数.但这个数组已被旋转过多次,次数不详.找出数组中的某个元素. * 能够假定数组元素原先是按从小到大的顺序排列的. */ /** * 思路:数组 ...
- LeetCode:删除排序链表中的重复元素【83】
LeetCode:删除排序链表中的重复元素[83] 题目描述 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示 ...
- 力扣(LeetCode)删除排序链表中的重复元素II 个人题解
给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字. 思路和上一题类似(参考 力扣(LeetCode)删除排序链表中的重复元素 个人题解)) 只不过这里需要用到一个前 ...
- LeetCode.1047-重复删除字符串中的所有相邻重复项
这是小川的第389次更新,第419篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第251题(顺位题号是1047).给定一个小写字母的字符串S,重复删除两个相邻且相等的字母 ...
随机推荐
- Web前端入门第 33 问:CSS 元素外观常用属性(边框、阴影、轮廓、透明度)
background 作为元素外观里的重点功臣介绍完毕,本文再一览其他常用的外观属性. 本文示例中,盒子基础样式: .box { font-size: 20px; margin: 20px; padd ...
- 微信小程序/H5 调起确认收款界面
微信小程序/H5 调起确认收款界面详解(附代码+平台兼容处理) 场景:用户点击「收款」按钮后,系统调起微信收款组件,用户确认后完成转账或收款流程.该能力广泛用于现金营销.二手交易.佣金报酬.企业赔付等 ...
- c#实现 正弦sin、反正弦arcsin,正切tan、反正切arctan:求角度值
1 #region 三角函数和反三角函数 2 3 using System; 4 using System.Collections.Generic; 5 using System.IO; 6 usin ...
- AutoFac学习Demo1——官网Demo
AutoFac实现Demo1 1.创建一个工作台(.NET Core)程序AutofacDemo1,nuget引入AutoFac,搜索第一个就是 2.创建输出接口IOutput及实现ConsoleOu ...
- PhpStorm - 本地动态调试-下载配置xdebug扩展
PhpStorm - 本地动态调试-下载配置xdebug扩展 00x01 查看phpinfo <?php phpinfo(); 00x02下载扩展前查看Architecture 如果Archit ...
- 【记录】Python3|Python出现循环引用模块怎么办?(又称循环依赖)
前言 在Python开发过程中,尤其是在大型项目中,我们经常会遇到模块间相互依赖的情况.这种相互依赖,即所谓的"循环引用",往往会导致代码难以维护,并可能引发各种运行时问题.在这篇 ...
- svg标签元素定位最有效的办法
随着前端技术发展,svg(可伸缩矢量图形 )在前端应用中广泛被使用,然而采用传统的xpath元素定位方法已经无法对其进行定位,我们需要将svg标签及其包含的子标签用以下方式表达: *[name()=& ...
- 第六章: SEO与交互指标 二
上一篇文章地址 5. 提升用户参与度 提高用户参与度不仅有利于SEO,还能增加转化率和用户留存. 5.1 内容结构优化 使用吸引人的标题和小标题: 使用数字列表.问题形式或"如何" ...
- codeup之C语言11.1 + C语言11.2 + C语言11.4 + 11.7 + C语言11.8(结构体
讲真,这几道题可以不做,顶多可以注意下结构体和联合体的区别 Description 完成一个对候选人得票的统计程序.假设有3个候选人,名字分别为Li,Zhang和Fun.使用结构体存储每一个候选人的名 ...
- UML类图-UML Class Diagram
.wj_nav { display: inline-block; width: 100%; margin-top: 0; margin-bottom: 0.375rem } .wj_nav_1 { p ...