每天一道leetcode443-压缩字符串

辣条走起,每月的leetcode刷题99元奖励就靠大家啦~

前言

2018.11.29号打卡

昨天的题解

题目

每天一道leetcode443-压缩字符串

题目详述

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

示例:

输入: "the sky is blue",

无空格字符构成一个单词。

题目详解

思路

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

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

640?wx_fmt=png
test.png
 

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号打卡

作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的微信公众号:程序员乔戈里,公众号有3T编程资源,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道leetcode打卡群与技术交流群,欢迎关注。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值