Leetcode Day5

27.移除元素

在这里插入图片描述
在这里插入图片描述
双指针思路:b找到的不是val值,a找到的是val值,每次把b的值赋给a,当a>=b 跳出循环,
1)当b没找到非val时,b–==-1,return 0;
2)当a没找到val值时,return b+1即为原来数组条件
3)当为[] b=-1 return 0;
4) 当为[1] 1 b–=-1,return 0;

    public int removeElement(int[] nums, int val) {
        int a=0 ; //
        int b=nums.length-1; //尾指针
        while(a<b){
            while(b>0 && nums[b]==val) b--;  //[3,3,3] 3 如没有b>0,会导致溢出
            while(a< nums.length && nums[a]!=val) a++;  
            //每次循环 a=val b!=val
            if(a>=b) break;
            nums[a]=nums[b];
            a++;
            b--;
        } 
        if(b>=0 && nums[b]==val) b--; //[1] 1 b=-1  return 0;[]
        return b+1;   	//[2,2] 3  a=2,a>b ,break;return b+1=2;
}

38.外观函数

在这里插入图片描述
在这里插入图片描述
题解:运用递归函数对上一个字符串进行解释。例如 n=4 读3=“21” 没有出现相同元素则读出 1个2 1个1 == 1211
具体思路:运用双指针检测相同元素,并把个数和当前元素加入到字符数组中。

    public String countAndSay(int n) {
    if(n==1)    return "1";
    else{
        String faye = countAndSay(n-1); //只需每次读出上个元素即可
        StringBuilder leslie = new StringBuilder(); //StringBuilder动态字符数组
        int a= 0 ;
        int b= 0 ;
        while(b<faye.length()) { // b没进行到文件末尾
            if(faye.charAt(a)!=faye.charAt(b)){
                leslie.append(b-a).append(faye.charAt(a));
                a=b;
            }
                b++;  //进行到末尾 ,相应的尾指针+1 
        }
        leslie.append(b-a).append(faye.charAt(a));
        return leslie.toString();
        }

    }

StringBuilder详解

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值