0
点赞
收藏
分享

微信扫一扫

【LeetCode】面试题 01.06. 字符串压缩

yeamy 2022-12-27 阅读 108

【题目描述】

字符串压缩。利用字符重复出现的次数,编写一种方法,实现基本的字符串压缩功能。比如,字符串​aabcccccaaa​会变为​a2b1c5a3​。若“压缩”后的字符串没有变短,则返回原先的字符串。你可以假设字符串中只包含大小写英文字母(a至z)

​​https://leetcode.cn/problems/compress-string-lcci/description/​​

【示例】

【LeetCode】面试题 01.06. 字符串压缩_bc

【代码】admin

import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* 2022-12-27
*/

class Solution {
public String compressString(String str) {
StringBuilder sb = new StringBuilder();
for(int left = 0; left < str.length(); left++){
// 右指针每次从left开始, 负责移动
int right = left;
int count = 0;
while (right < str.length() && str.charAt(left) == str.charAt(right)){
count++;
right++;
}
sb.append(str.charAt(left)).append(String.valueOf(count));
left = right - 1;
}
// 题目要求,压缩后的字符串的长度不能大于等于原字符, 如果大于等于则输出元字符
return sb.toString().length() >= str.length() ? str : sb.toString();
}
}

public class Test {
public static void main(String[] args) {
String str = "aabcccccaaa";
String str1 = "abbccd";
System.out.println(new Solution().compressString(str));
System.out.println(new Solution().compressString(str1));
}
}



【其他】

​​【LeeCode】443. 压缩字符串 (原地修改)​​




举报

相关推荐

0 条评论