首页 > 其他分享 >leetcode_打卡09

leetcode_打卡09

时间:2023-04-21 12:33:52浏览次数:43  
标签:right read chars 09 write int 打卡 leetcode left

leetcode_打卡09

题目:443. 压缩字符串

思路:双指针

代码:

class Solution {
    public int compress(char[] chars) {
        int n = chars.length;
        int write = 0, left = 0;
        for (int read = 0; read < n; read++) {
            if (read == n - 1 || chars[read] != chars[read + 1]) {
                chars[write++] = chars[read];
                int num = read - left + 1;
                if (num > 1) {
                    int anchor = write;
                    while (num > 0) {
                        chars[write++] = (char) (num % 10 + '0');
                        num /= 10;
                    }
                    reverse(chars, anchor, write - 1);
                }
                left = read + 1;
            }
        }
        return write;
    }

    public void reverse(char[] chars, int left, int right) {
        while (left < right) {
            char temp = chars[left];
            chars[left] = chars[right];
            chars[right] = temp;
            left++;
            right--;
        }
    }
}

标签:right,read,chars,09,write,int,打卡,leetcode,left
From: https://www.cnblogs.com/ZLey/p/17339945.html

相关文章

  • 周五打卡
    1.题目描述定义一个长度为n(1<=n<=100)的整型数组a,输入n个整数。编写程序,将该数组中所有奇数放在偶数前面2.设计思路:输入整型数组a和数组长度n。定义两个指针i和j,分别指向数组头尾。当i<j时,向后移动i,直到a[i]为偶数;向前移动j,直到a[j]为奇数;交换a[i]和a[j]的值。重复执行第3步......
  • 【DP】LeetCode 312. 戳气球
    题目链接312.戳气球思路参考动态规划套路解决戳气球问题分析动态规划题目的时候只需要考虑最后一个阶段,因为所有的阶段转化都是相同的,考虑最后一个阶段容易发现规律在数组的动态规划问题中,一般dp[i]都是表示以nums[i]为结尾的状态;dp[i][j]分别表示以nums1[i]和nums......
  • 《rv1109 部署yolov5训练模型汇总》
    环境以及相关软件版本:yolov5(v5.0)、Ubuntu18.04、rknn-toolkit1.7.3、rv1109  一.yolov5环境安装1conda安装1.1Anaconda安装包:在浏览器中打开 https://www.anaconda.com/products/individual 下载适合你的操作系统的Anaconda安装包(Python版本根据需要选择......
  • leetcode-876链表的中间节点
    找链表的中间节点思路心得当不知道while的终止条件时,可以先写while(true),然后在循环体中写终止条件,这样写的好处是可以暂时不考虑终止条件,使思路更清晰;坏处是这样有时候会使循环体的内容很混乱要注意分类!本题中把情况分为节点个数是奇数和偶数去分析,最终找到统一的......
  • leetcode-234回文链表
    回文链表方法一:借助数组进行判断把节点的值复制到一个数组中再利用数组进行判断,但是这样需要占用额外的空间/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNode():val(0),next(nullptr){}*......
  • sdutoj3009 幸运数
    幸运数TimeLimit:1000ms  Memorylimit:262144K  有疑问?点这里^_^题目描述如果,a是幸运数,b是幸运数,那么a+b+2也是幸运数。现在,告诉你两个幸运数a和b,请问c是不是幸运数。输入输入数据有多行组成,首先是一个整数N(0<N<1000),表示测试实列的个数,然后是N行数据,每行......
  • XTU 1209 Alice and Bob
    AliceandBob   TimeLimit:1000MS MemoryLimit:65536KB ProblemDescriptionThefamous"AliceandBob"areplayingagameagain.Sonowcomesthenewproblemwhichneedapersonsmartasyoutodecidethewinner.Theproblemisasfollows:......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之week01 02-09 测试算法时间复杂度性
    1、数组生成器测试算法性能肯定不能自己手动声明创建数组了,在现代计算机上,对于O(n)级别的算法,都需要10W级别以上的数据才能看到性能,我们肯定不能手动声明10W个元素的数组吧?所以,创建数组生成器。这里,自己创建一个数组生成器——ArrayGenerator。packagecom.mosesmin.datastruc......
  • 每日打卡·
    //#include<iostream>//#include<stdio.h>//#include<string>//usingnamespacestd;//char*search(char*s,char*t);//intmain()//{//chars[30]="";//charc;//c=getchar();inti=0;//while(c!='\n......
  • 第七天打卡
    问题:N个有序整数数列已放在一维数组中,利用二分查找法查找整数m在数组中的位置若找到,则输出其下标值;反之,则输出“Notbefound”设计:利用二分查找,寻找此数。流程图 源代码:#include<stdio.h>#defineN10intmain(){ inti,a[N]={1,3,45,67,88,99,101,190},low=0,high=N-1,mid......