前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >每天一道leetcode443-压缩字符串

每天一道leetcode443-压缩字符串

作者头像
乔戈里
发布2019-09-17 15:44:50
4020
发布2019-09-17 15:44:50
举报
文章被收录于专栏:Java那些事Java那些事

昨天的题解

题目

每天一道leetcode443-压缩字符串 分类:字符串

题目详述

给定一个字符串,逐个翻转字符串中的每个单词。

示例:

输入: "the sky is blue", 输出: "blue is sky the". 说明:

无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。

题目详解

思路 代码(安卓机代码可以移动,苹果机不行,最近我在寻找一个新的代码排版,PC端打开没有问题)

先放个图片,代码排版有问题的看图片

test.png

代码语言:javascript
复制
 
代码语言:javascript
复制
class Solution {
    public int compress(char[] chars) {
        int count = 1; 
        int index = 0;
        for (int i = 0; i < chars.length; i++) {
            if (i + 1 == chars.length || chars[i] != chars[i+1]) {
                chars[index++] = chars[i];
                if (count > 1) {
                    String temp = String.valueOf(count);
                    for(int k=0;k<temp.length();k++)
                        chars[index++] = temp.charAt(k);
                }
                count = 1;
            }
            else {
                count++;//统计重复字符的个数
            }
        }
        return index;
    }
}

代码讲解

  • 6行就是如果一个字符和它的下一个字符不相等了,首先是chars[index] = chars[i] 这行就是把比如a,a,b,b,b就是把数组i的位置指向第一个b,好重新开始新的一轮的计算重复字符的个数;
  • 8-12行就是如果字符的个数是大于1的那么就需要统计这个数字,然后10-11行就是把这个数字的变成字符串,取每一个字符赋值到字符数组中
  • 13行 重新把count置位1因为一个字符至少出现一次
  • 15-17行就是如果不相等,统计字符出现的次数

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员乔戈里 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 题目详述
  • 题目详解
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档