Arts挑战第二周(2022.03.28~2022.04.03)

Algorithm

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:

P A H N
A P L S I I G
Y I R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。

public String convert(String s, int numRows) {  
    if (numRows == 1) {  
        return s;  
    }  
    List<StringBuilder> list = new ArrayList<>(numRows);  
    boolean flag = false;  
    int num = 1;  
    for (int i = 0; i < s.length(); i++) {  
        if (i < numRows) {  
            StringBuilder stringBuilder = new StringBuilder();  
            stringBuilder.append(s.charAt(i));  
            list.add(stringBuilder);  
        } else {  
            if (flag) {  
                list.get(num).append(s.charAt(i));  
            } else {  
                list.get(numRows - num - 1).append(s.charAt(i));  
            }  
            num++;  
            if (num >= numRows) {  
                num = 1;  
                flag = !flag;  
            }  
        }  
    }  
    StringBuilder result = new StringBuilder();  
    for (StringBuilder builder : list) {  
        result.append(builder);  
    }  
    return result.toString();  
}

解题思路:
特殊情况,就是那种只有1行的,这种情况直接输出就行了。
如果多行的数据,然后有几行,就准备几个SpringBuilder,然后分别装每行对应的字符串,这样,我们就可以遍历,但是遍历呢,要以行数为一个单位,一次是正序,一次是倒序。

Review

Goodbye Evernote

这篇文章,讲了作者为什么放弃印象笔记,专用obsidian的故事,也对比了一下obsidian和印象笔记的优缺点。恰好,obsidian也是我现在使用的笔记工具。

Tip

这周看了一下Arthas这个插件,真的牛逼,可以打印出你程序当前运行对象的各种信息:

Share

再分享一波《高七》

七个习惯的原则

  • 习惯一:主动积极
    责任、选择、担当、主动、智慧
  • 习惯二:以终为始
    愿景、承诺、目的
  • 习惯三:要事第一
    专注、诚信、纪律、优先级
  • 习惯四:双赢思维
    互惠、公平、富足
  • 习惯五:知彼解己
    尊重、互相理解、同理心、勇气
  • 习惯六:统合综效
    创新、合作、多元化、谦逊
  • 习惯七:不断更新
    更新、持续改进、平衡
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值