题解 | #压缩牛群编号# java

压缩牛群编号

https://www.nowcoder.com/practice/db9dd240e5f54b6d8eeadfbd9b7f865f

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param chars char字符型一维数组
     * @return char字符型一维数组
     */
    public char[] compress (char[] chars) {
        // write code here
        int i = 0; // 当前字符的位置指针
        int j = 0; // 压缩后存储位置指针

        while (i < chars.length) {
            int count = 1; // 连续重复字符的数量

            // 统计连续重复字符的数量
            while (i + 1 < chars.length && chars[i] == chars[i + 1]) {
                count++;
                i++;
            }

            // 将当前字符存入结果数组
            chars[j++] = chars[i];

            // 如果连续重复字符的数量大于1,则将数字转换为字符存入结果数组
            if (count > 1) {
                String countStr = String.valueOf(count);
                for (char c : countStr.toCharArray()) {
                    chars[j++] = c;
                }
            }

            // 移动指针到下一个不同的字符位置
            i++;
        }

        // 返回压缩后的数组长度
        return Arrays.copyOfRange(chars, 0, j);
    }
}

Java代码

题目的知识点是:

  • 数组遍历
  • 字符串处理

代码的文字解释如下:

该代码实现了一个对农场里每种牛的数量进行压缩表示的功能。它接受一个字符数组chars,根据连续重复字符的情况进行压缩。

代码初始化两个指针ij,分别用于追踪当前字符和压缩后存储的位置。

使用一个循环遍历字符数组chars。在内部循环中,代码统计连续重复字符的数量count。如果当前字符与下一个字符相同,则将count加1,并移动指针i

将当前字符存入结果数组chars的位置j。如果连续重复字符的数量大于1,则将数字转换为字符并存入结果数组chars中。

移动指针i到下一个不同的字符位置,并继续迭代直到遍历完整个字符数组。使用Arrays.copyOfRange()方法将压缩后的部分截取出来,并作为返回结果。

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务