前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >ARTS_202208W1

ARTS_202208W1

原创
作者头像
cswh
发布2022-08-31 18:08:56
2160
发布2022-08-31 18:08:56
举报
文章被收录于专栏:CSWH技术博客CSWH技术博客

ARTS 第 6 周

每周完成一个ARTS:

Algorithm:每周做一个 leetcode 的算法题

Review:阅读并点评写作一篇英文技术文章

Tip:学习至少一个技术技巧

Share:分享一篇有观点和思考的技术文章。

cloud.png
cloud.png

Table of Contents

  • Algorithm 表示数值的字符串
  • Review 停止使用TODO注解
  • Tip IDEA使用频率高的快捷键
  • Share 云服务器搭建Git私服

Algorithm

leetcode 表示数值的字符串

题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。

部分数值列举如下:

"+100", "5e2", "-123", "3.1416", "-1E-16", "0123"

部分非数值列举如下:

"12e", "1a3.14", "1.2.3", "+-5", "12e+5.4"

输入:s = "0"

输出:true

代码语言:txt
复制
public class 剑指Offer_20_表示数值的字符串 {
    public static void main(String[] args) {
        String s1= "5e2";
        String s2= "1a3.14";

        System.out.println(s1+", result:"+ isNumber(s1));
        System.out.println(s2+", result:"+isNumber(s2));
    }

    public static boolean isNumber(String s) {
        Map[] states = {
                new HashMap<Integer, Integer>(){{put(0,0); put(1,1); put(2,2); put(3,4);}}, // 0 > 0,1,2,4
                new HashMap<Integer, Integer>(){{put(2,2); put(3,4);}},                     // 1 > 2,4
                new HashMap<Integer, Integer>(){{put(2,2); put(3,3); put(4,6); put(0,9);}}, // 2 > 2,3,6,9
                new HashMap<Integer, Integer>(){{put(2,5); put(4,6); put(0,9);}},           // 3 > 5,6,9
                new HashMap<Integer, Integer>(){{put(2,5);}},                               // 4 > 5
                new HashMap<Integer, Integer>(){{put(2,5); put(4,6);put(0,9);}},            // 5 > 5,6,9
                new HashMap<Integer, Integer>(){{put(1,7); put(2,8);}},                     // 6 > 7,8
                new HashMap<Integer, Integer>(){{put(2,8);}},                               // 7 > 8
                new HashMap<Integer, Integer>(){{put(2,8); put(0,9);}},                     // 8 > 8,9
                new HashMap<Integer, Integer>(){{put(0,9);}},                               // 9 > 9
        };
        char[] chs = s.toCharArray();
        int stateId = 0; // 初始状态视为 0 ,即「开始空格」
        for(char c : chs){
            int typeId = type(c);
            if(!states[stateId].containsKey(typeId)) return false; // 无状态对应的类型
            stateId = (int) states[stateId].get(typeId); // 状态转移
        }
        return stateId == 2 || stateId == 3 || stateId == 5 || stateId == 8 || stateId == 9;
    }

    private static int type(char c){
        if(c == ' ') return 0;                          // 0: ' '
        else if(c == '+' || c == '-') return 1;         // 1: '+/-'
        else if(c - '0' >= 0 && c - '0' <= 9) return 2; // 2: digit
        else if(c == '.') return 3;                     // 3: '.'
        else if(c == 'e' || c == 'E') return 4;         // 4: 'e/E';
        else return -1;                                 // 5: 非法字符
    }
}

leetcode链接

Review

Stop Using TODO for Everything

一般写代码时会使用TODO注解,表示待完成的任务。

本文作者建议:停止在代码所有地方都使用TODO注释,而是使用更加具体的任务注解。如用“BUG”表示有个bug待修复、用“TESTME”表示添加测试。

image.png
image.png

Tip

整理Intellj IDEA(Mac版)使用频率比较高的快捷键,可以提高编程效率。

类结构和关系

Ctrl + H, 显示类的层次结构, 可查看父类, 查看某个类的子类 command+ F12, 弹窗显示当前类的结构、函数、方法等信息 Command+ B, 查看类的引用

查找

2次shift, 查找弹窗 Command + E, 最近打开文件 Command + shift + O, 快速查找文件,类似2次shift command+shift+删除键 回到上一次编辑修改位置

编辑代码

ctrl+command +o 优化导入import包 command+ alt +l 格式化代码 Ctrl+Shift+u 字符大小写的快速切换

收藏夹和书签

Shift+ Alt + F, 快速添加到收藏夹 command+ 2 打开收藏夹

代码管理

Ctrl + V 自带版本管理弹窗,快速提交git Command+ D 任意选择2个文件,可进行对比

idea配置

command + , 打开project structure, 配置preference command + ; 打开project structure

编辑文件

鼠标放到指定包上,Command + N, 新建类 新建测试类,command + shift + t

Win10系统及Mac更多快捷键,可以查看IDEA自带参考文档,菜单栏->帮助->快捷键参考。

image.png
image.png
image.png
image.png

另外,可以安装插件"Key Promoter X",点击操作时会提示相关的快捷键。

image.png
image.png

Share

现在云服务器很火,买了云服务器还没有用起来的同学,可以考虑搭建自己的Git服务器。

推荐:代码随想录——一文手把手教你搭建Git私服

PS:腾讯云服务器新人有优惠

image.png
image.png

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • ARTS 第 6 周
  • Table of Contents
    • Algorithm
      • Review
        • Tip
          • Share
          相关产品与服务
          云服务器
          云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档