移除相邻对儿 Remove Adjacent Pairs String

C++ STL核心组件解析与实战:从容器算法到性能优化 在C++编程中,数据结构和算法是构建高效软件的基础。标准模板库(STL)作为C++标准库的核心,通过泛型编程思想,提供了经过高度优化的通用数据结构和算法组件。其核心设计包括容器(如vector、map)、迭代器、算法和函数对象,这些组件协同工作,实现了数据存储与操作的分离,提升了代码的复用性和性能。STL的价值在于让开发者无需重复实现基础数据结构,能专注于业务逻辑,同时保证工业级的执行效率。在应用场景上,无论是需要快速随机访问的vector动态数组,还是基于红黑树实现有序存储的map关联容器,或是利用哈希表 阅读详情

举个例子:

ABCCBCBA ==> ACBA


思路比较简单,就是用一个基准指针和一个探索指针,不断比较,并把探索指针指向的元素拷到基准指针那里。

但要注意指针越界的问题,还有输入为空字符串的情况。


package String;

public class RemoveAdjacentPairs {

	public static void main(String[] args) {
//		String s = "ABCCBCBA";
//		String s = "";
		String s = "acbbcddc";
		System.out.println(removeAdjacentPairs(s));
	}
	
	
	public static String removeAdjacentPairs(String s) {
		int len = s.length();
		if(len == 0) {
			return s;
		}
		
		int cur = 0;			// 被比较对象
		char[] ss = s.toCharArray();
		for(int probe=1; probe<len; probe++) {	// 比较对象
			while(cur>=0 && probe<len && ss[probe]==ss[cur]) {
				probe++;
				cur--;
			}
			if(cur+1<len && probe>=0 && probe<len){
				cur++;
				ss[cur] = ss[probe];
			}
		}
		
		// cur+1为移除相邻相同字符后的长度,0为offset
		return new String(ss, 0, cur+1);
	}

}



如果要用递归的方法则参考:

http://www.geeksforgeeks.org/recursively-remove-adjacent-duplicates-given-string/





【信息科学与工程学】【数据科学】数据科学领域 第六篇 算法设计 07 堆、栈、表、矩阵、集合、队列、数组、字符串、树、图、动态规划、结构体、元组的算法01 当前段必须包含所有字符的最后出现位置。1. 字符串分割成最多片段2. 基因序列功能域划分3. 文本段落划分4. 音频声道分离5. 图像色彩分区6. 社交网络社群划分7. 蛋白质结构域8. 音乐乐章分段9. 代码模块划分10. 章节划分特征:一次扫描,贪心确定边界。 阅读详情

相关推荐

【信息科学与工程学】计算机科学与技术——第七十七篇 系统架构设计02

编号类型模型配方企业资本运作的方法/规则/条件/依据及所有的步骤(​风险处理/异常处理/危机应对关联知识法律法规和裁决依据​​由发起人(通常是知名投资人、投行或产业资本)先设立一个只有现金、无实际业务的特殊目的收购公司(SPAC),通过IPO募集资金并在交易所上市。然后在规定时间内(通常24个月)寻找一家非上市公司进行合并(De-SPAC),使目标公司迅速实现上市,规避传统IPO的复杂流程和不确定性。1.:在开曼或特拉华注册空壳公司,注入少量种子资金。2.

weixin_49199313的博客 315

C. Remove Adjacent(ranting 1600)超详细题解

C. Remove Adjacent(ranting 1600)超详细题解

Bill_HJR的博客 477

GeeksForGeeks Microprocessor Lecture Notes

GeeksForGeeks Microprocessor Lecture Notes GeeksForGeeks Microprocessor Lecture Notes

C. Remove Adjacent

C. Remove Adjacent

zzzyyzz_的博客 238

ros1 Noetic下运行cartographer算法进行2d建图

最近的工作重点放在机器狗的二次开发上,项目的需求是要升级机器狗的slam算法和导航避障算法,slam拟采用激光与视觉融合算法,激光slam就使用最为流行和实用的cartoghper算法。在这过程中遇到好多坑,希望看到这篇博客的人能少走弯路吧。我用的仿真机器人是wpr_simiulation。首先复制一份demo_revo_lds.launch文件和revo_lds.lua文件,修改成下面的样子。my_test.lua文件,base_link就是机器人的坐标系。下载与安装的博客有很多,我推荐。

sun5739的博客 1547

【Qualcomm高通音频】如何封装音频控件?

音频代码涉及面很广,这篇文档介绍如何封装音频控件给HAL层使用。这里以AW87519芯片调试为例进行介绍封装音频控件和使用的方法。在最初接出到高通音频基础功能调试的时候,都是从tinyalsa指令/mixer_paths文件配置开始。因为单独一个音频设备的调试,都对应一条音频链路的打通。比如以下链接上高通平台基础音频输入输出设备调试: 【Qualcomm音频】Speaker 调试记录http...

crow_ch的博客 1955

JQuery中html、append、appendTo、after、insertAfter、before、insertBefore、empty、remove系列方法的使用。insertAdjacent

https://blog.youkuaiyun.com/sunpeiyumail/article/details/7665668https://blog.youkuaiyun.com/xiangxiangw29/article/details/52460563https://blog.youkuaiyun.com/zjlovety/article/details/6648716https://blog.youkuaiyun.com/lizhao...

chan_1030261721的博客 227

轻量级替代方案:用AIFlowy + Ollama在本地快速搭建一个可用的AI智能体平台

本文介绍了如何使用AIFlowy和Ollama在本地快速搭建轻量级AI智能体平台,涵盖从环境准备到智能体集成的全流程。通过简化部署步骤和优化性能,15分钟内即可完成搭建,适用于原型验证和小团队协作,显著提升开发效率。

weixin_29207533的博客 220

1600*C. Remove Adjacent(贪心&字符串)

【代码】1600*C. Remove Adjacent(贪心&字符串)

陈进士学习的博客 285

038、OIS 光学防抖原理与调试:陀螺仪数据融合、Lens Shift OIS 的闭环控制

本文分享了OIS光学防抖系统的调试经验和关键技术要点。作者通过一个"呼吸感"Bug案例,揭示了陀螺仪数据融合和闭环控制的重要性。系统介绍了OIS的三个关键层次:传感器层(陀螺仪特性)、控制层(复合算法)和执行层(闭环控制)。重点讲解了陀螺仪数据融合的互补滤波实现、Lens Shift闭环控制的PID优化策略(包括积分抗饱和和微分滤波),以及前馈补偿的应用。最后总结了调试中的关键问题:数据同步、霍尔校准、温度补偿和性能评估方法,并给出实用建议:平衡算法复杂度与性能、预留带宽余量、重视产线校准等。文章强调OIS

sundong_81的博客 263

RK3568平台(USB篇)USB基础知识

现象:把USB设备比如Android手机接到PC答1:是USB控制器,是USB控制器内嵌的root hub.答2. windows里已经有了USB的总线驱动程序,接入USB设备后,是"总线驱动程序"知道你是"android phone"提示你安装的是"设备驱动程序"。USB总线驱动程序负责:识别USB设备, 给USB设备找到对应的驱动程序。答3. PC的USB口内部,D-和D+接有15K的下拉电阻,未接USB设备时为低电平USB设备的USB口内部,D-或D+接有1.5K的上拉电阻;

weixin_49303682的博客 1658

1321C - Remove Adjacent

链接: https://codeforces.ml/problemset/problem/1321/C 题意: 对字符串S进行处理,删除其中的字符S[i],这个s[i]相邻的有比它小1(ASCII上)的,就可以删除 解: 先做大的,即Z开始,Z不影响Y,以此类推,数据小,暴力vans 实际代码: #include<iostream> #include<cmath> #include<algorithm> #include<cstring> #include&l

Fei_WuYan的博客 264

微信小程序开发:实现地图导航功能

其中,id用于调用地图组件,latitude和longitude表示地图的中心点坐标,markers表示地图中的标记点,covers表示地图中的覆盖物,polyline表示地图中的折线图,show-location表示是否显示当前定位点,bindregionchange表示移动地图时触发的事件。其中,id表示标记点的唯一标识,latitude和longitude表示标记点的坐标,title表示标记点的名称,iconPath表示标记点的图标路径,width和height表示标记点的宽度和高度。

吃不胖. 8922

[GeeksforGeeks]Remove all adjacent duplicates

Given a string, recursively remove adjacent duplicate characters from string. The output string should not have any adjacent duplicates. Input:  azxxzy Output: ay First "azxxzy" is reduced to "az

Neko的专栏 3263

基于ArduPilot的旋翼式无人机飞行器开发系列(二,学习路线)

一,热爱 作为一名耿直的技术男,在这里我只想说一句,热爱是可持续学习的第一要素,也只有热爱才能让你坚持到最后。 至于最后能得到什么,只有你自己知道。常说书中自有颜如玉,书中自有黄金屋。如果你是为了颜如玉,我相信大多数颜如玉做不了你的红颜知己。如果是为了黄金屋,当你持续投入时间和金钱却看不到回报的时候,相信退堂鼓早已隆隆作响。 我给自己的信条就是为当下努力工作,为将来持续学习。当前飞控行业并没有爆发,如果想赚块钱,去互联网汽车,去VR/AR吧,去元宇宙吧。 那么我热爱...

从0到1,突破自己 1671

[AI8051U入门第一步]环境安装和按键控制流水灯

本文介绍了AI8051U单片机的开发环境搭建及GPIO应用。主要内容包括:1)通过ISP软件完成Keil开发环境配置;2)AI8051U特性介绍,包括32位8051内核、浮点运算单元及丰富外设;3)GPIO输入输出模式解析,并附流水灯控制代码;4)提供完整的系统初始化、延时函数及LED控制代码实现。文章配套资源包含完整工程代码,适用于智能硬件及物联网开发。

sinat_58149788的博客 671

CF1321C Remove Adjacent(周围串删除)(贪心算法)

You are given a stringssconsisting of lowercase Latin letters. Let the length ofssbe|s|∣s∣. You may perform several operations on this string. In one operation, you can choose some indexiiand remove theii-th character ofss(s_isi​) if at leas...

胜神明半子 461

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

codeforce C. Remove Adjacent

题意: 给你一个字符串,每当一个字符的相邻字符在字母表中与它相邻,你就可以选择删掉它。问最大可以删去的字符是多少 思路: 最开始想的是从头开始判断,但是情况太多,总是会漏掉。注意到这道题数据很小,所以不如直接暴力求解。每次我们都循环一边,找到满足删去条件的最大的字符,我们把它删掉,然后继续循环,直到没有符合条件的。 代码: #include<bits/stdc++.h> using n...

小飞猪的博客 643

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[codeforces 1321C] Remove Adjacent 从字典序最大的字母开始处理

Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) 比赛人数5638 [codeforces 1321C] Remove Adjacent 从字典序最大的字母开始处理 总目录详见https://blog.youkuaiyun.com/mrcrack/article/details/103564004 在线测评地址...

mrcrack的博客 513

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

CodeForces - 1321C Remove Adjacent(贪心+模拟)

题目链接:点击查看 题目大意:给出一个长度不超过100且只包含小写字母的字符串,现在规定,如果某个位置 i 的相邻位置存在着当前位置所代表字母的前一个字母,即 i - 1 和 i + 1 中存在着a[ i - 1] = a[ i ] - 1 或 a[ i + 1 ] = a[ i ] - 1 ,则代表位置 i 的字母可以删除,两侧子串拼接起来,问最多可以进行删除操作多少次 题目分析:读懂题后...

Falcon的博客 779

Codeforces Round #625 (Div. 2, based on Technocup 2020 Final Round) C. Remove Adjacent

C. Remove Adjacent time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standard output You are given a stringssconsisting of lowercase Latin letter...

菱形继承 699

1209.Remove All Adjacent Duplicates in String II 简单解法

Given a string s, a k duplicate removal consists of choosing k adjacent and equal letters from s and removing them causing the left and the right side of the deleted substring to concatenate together....

fanzitao的专栏 489

Codeforces Round #625 (Div. 2) C. Remove Adjacent /详解

C. Remove Adjacent time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard output You are given a string s consisting of lowercase Latin letters. Let the len...

放荡者的茶会 960

codeforces #625 div.2 C. Remove Adjacent

C. Remove Adjacent You are given a string s consisting of lowercase Latin letters. Let the length of s be |s|. You may perform several operations on this string. In one operation, you can choose some ...

qq_44779710的博客 289
上一篇: 一些我推荐的和想上的网络课程(Coursera, edX, Udacity)
下一篇: 找最小的第k个数 k min (Selection Algorithm 与 Median of Medians Algorithm)
chiiis
博客等级 码龄14年 422粉丝 429原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值