压缩字符串的思路探讨与源码
压缩字符串的题目如下图,该题属于双指针类型和字符串类型的题目,主要考察对于双指针搜索方法的使用和字符串结构的理解。本文的题目作者想到2种方法,分别是双指针方法和三指针方法,其中双指针方法使用Java进行编写,而三指针方法使用Python进行编写,当然这可能不是最优的解法,还希望各位大佬给出更快的算法。
本人认为该题目可以使用双指针方法的思路进行解决,首先计算字符串数组的长度,并初始化左右指针的位置,开始遍历循环,判断指针是否位于字符串的末尾,或读指针指向的字符不同于下一个字符时,就可以认为读指针read位于某一段连续相同子串的最右侧。然后判断区间长度是否大于1,如果是就把左边的下标赋值,并进行内部迭代循环,按此思路进行遍历,直到循环结束并返回结果。那么按照这个思路我们的Java代码如下:
#喷火龙与水箭龟
class Solution {
public int compress(char[] chars) {
int numLen = chars.length;
int aex = 0;
int bex = 0;
for (int read = 0; read < numLen; read++) {
if (read == numLen - 1 || chars[read] != chars[read + 1]) {
chars[aex++] = chars[r