Linux printf & Class.this & git rebase & Persistent Bugger

Tips

  1. 使用 printf 命令方便地在 Linux 中进行进制转换(查找 Java 线程16进制线程 id 时经常会用到)。
    printf "%x\n" 222 打印222的16进制。
    printf "%d\n" 0x3ac 打印3ac的10进制。
    另外 %o 为八进制。
  2. Java 中 thisClass.this 的区别:
    当内部类或者匿名内部类要使用外部类的实例时使用 Class.this
class Outter {
    String name;

    class Inner {
        String name;
        String getPersonName() {
            // to fetch the Outter's name field
            return Person.this.name; 
        }
    }
}
  1. git rebase 命令,相信很多人用得还是比较少的,那么它跟 git merge 有哪些区别呢?这个可能一言难尽,网上也有很多资料可以看,所以这里只列举一个 git rebase 的常用方式。
    git rebase -i upstream|branch 合并多次提交,通过交互式编辑来完成后续操作,通常在当前分支上使用或者将分支 rebase 至其他分支上使用。

Code

Persistent Bugger from CodeWars 6kyu.
一个写得比较好的递归 solution :

    public static int persistenceWithRecursion(long n) {
        long m = 1, r = n;
        if (r / 10 == 0)
            return 0;
        for (r = n; r != 0; r /= 10)
            m *= r % 10;
        return persistence(m) + 1;
    }

非递归:

public static int persistenceWithoutRecursion(long n) {
        int times = 0;
        while (n >= 10) {
            n = Long.toString(n).chars().reduce(1, (r, i) -> r * (i - '0'));
            times++;
        }
        return times;
    }

反正都比我自己写的简洁多了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值