当前位置:网站首页>LeetCode_2632_字符串压缩
LeetCode_2632_字符串压缩
2022-08-09 22:04:00 【Fitz1318】
题目链接
题目描述
字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串aabcccccaaa
会变为a2b1c5a3
。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a
至z
)。
示例1:
输入:"aabcccccaaa"
输出:"a2b1c5a3"
示例2:
输入:"abbccd"
输出:"abbccd"
解释:"abbccd"压缩后为"a1b2c2d1",比原字符串长度更长。
提示:
- 字符串长度在
[0, 50000]
范围内。
解题思路
双指针法
- 令
left
和right
都初始化为0
,right
指针遍历字符串,直到访问到不同字符时停止,此时right - left
便是首个字符的连续出现次数,即可完成首个字符的压缩操作 - 接下来,从下个字符开始,重复以上操作,直到遍历完成即可
AC代码
class Solution {
public String compressString(String S) {
int left = 0;
int right = 0;
StringBuilder ans = new StringBuilder();
while (left < S.length()) {
while (right < S.length() && S.charAt(left) == S.charAt(right)) {
right++;
}
ans.append(S.charAt(left)).append(right - left);
left = right;
}
return ans.length() < S.length() ? ans.toString() : S;
}
}
边栏推荐
猜你喜欢
随机推荐
面试官:Redis 大 key 要如何处理?
APS系统能消除造成生产和运输延迟的瓶颈
如何坚持使用程序化系统?
继承关系下构造方法的访问特点
Tencent continues to wield the "big knife" to reduce costs and increase efficiency, and free catering benefits for outsourced employees have been cut
反射机制篇
leetcode:319. 灯泡开关
Interviewer: How to deal with Redis big key?
JS Deobfuscation - AST Restoration Case
Flask之路由(app.route)详解
R语言ggplot2可视化:使用ggplot2可视化散点图、使用labs参数自定义Y轴的轴标签文本(customize Y axis labels)
leetcode:286.墙和门
Flask introductory learning tutorial
浅析量股票化交易的发展现状
【技术分享】SLA(服务等级协议)原理与配置
leetcode:331. 验证二叉树的前序序列化
十步以内,用小程序快速生成App!
C. Binary String Reconstruction
xlrd 与 xlsxwritter 的基本操作
聊天尬死名场面,你遇到过吗?教你一键获取斗图表情包,晋升聊天达人