1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- package weekContest.A399.A2;
- /**
- * @see <a href='https://leetcode.cn/problems/string-compression-iii/description/'>压缩字符串 III</a>
- * @ProjectName: LeetCode
- * @FileName: Solution
- * @Author: 杨逸
- * @Data:2024/5/26 10:26
- * @Description:
- * 给你一个字符串 word,请你使用以下算法进行压缩:
- *
- * 从空字符串 comp 开始。当 word 不为空 时,执行以下操作:
- * 移除 word 的最长单字符前缀,该前缀由单一字符 c 重复多次组成,且该前缀长度 最多 为 9 。
- * 将前缀的长度和字符 c 追加到 comp 。
- * 返回字符串 comp 。
- *
- *
- *
- *
- *
- * 示例 1:
- *
- * 输入:word = "abcde"
- *
- * 输出:"1a1b1c1d1e"
- *
- * 解释:
- *
- * 初始时,comp = "" 。进行 5 次操作,每次操作分别选择 "a"、"b"、"c"、"d" 和 "e" 作为前缀。
- *
- * 对每个前缀,将 "1" 和对应的字符追加到 comp。
- *
- * 示例 2:
- *
- * 输入:word = "aaaaaaaaaaaaaabb"
- *
- * 输出:"9a5a2b"
- *
- * 解释:
- *
- * 初始时,comp = ""。进行 3 次操作,每次操作分别选择 "aaaaaaaaa"、"aaaaa" 和 "bb" 作为前缀。
- *
- * 对于前缀 "aaaaaaaaa",将 "9" 和 "a" 追加到 comp。
- * 对于前缀 "aaaaa",将 "5" 和 "a" 追加到 comp。
- * 对于前缀 "bb",将 "2" 和 "b" 追加到 comp。
- *
- *
- * 提示:
- *
- * 1 <= word.length <= 2 * 105
- * word 仅由小写英文字母组成。
- */
- public class Solution {
- public String compressedString(String word) {
- String comp = "";
- for (int i = 0; i < word.length(); i++) {
- int count = 1;
- char c = word.charAt(i);
- while (i+1 < word.length() && c == word.charAt(i+1)){
- count++;
- i++;
- if (count == 9)break;
- }
- comp += String.valueOf(count) + String.valueOf(c);
- }
- return comp;
- }
- }
|