美文网首页
ARTS第二周

ARTS第二周

作者: leo小超 | 来源:发表于2019-03-31 20:42 被阅读0次

    Algorithm

    leetcode125(125. Valid Palindrome),判断是否回文,只考虑a-z、0-9、A-Z,忽略大小写
    第一个思路,一看到回文,就想到栈,先去掉无用字符,再用栈判断是否回文,刚下笔写到stringbuilder,想到如果字符串很长,stirngbuilder
    会复制一份string占用很大内存。接着想到上一篇写的一左一右指针,然后放弃第一个思路用第二种方法
    第二个思路,左指针从左到右走,右指针从右往左走,然后比较。左右指针遇到了,回文了。

    code
    public boolean isPalindrome(String s) {
            Character ci;
            Character cj;
            for (int i = 0, j = s.length() -1; i < s.length() && j >= 0; i++) {
                if (i == j) {
                    return true;
                }
                ci = s.charAt(i);
                if (ci >= '0' && ci <= '9') {
                    for (; j >= 0; j--) {
                        if (i == j) {
                            return true;
                        }
                        cj = s.charAt(j);
                        if (cj >= '0' && cj <= '9') {
                            if (ci == cj) {
                                j--;
                                break;
                            } else {
                                return false;
                            }
                        } else if (cj >= 'a' && cj <= 'z' || cj >= 'A' && cj <= 'Z') {
                            return false;
                        }
                    }
                } else if (ci >= 'a' && ci <= 'z') {
                    for (; j >= 0; j--) {
                        if (i == j) {
                            return true;
                        }
                        cj = s.charAt(j);
                        if (cj >= '0' && cj <= '9') {
                            return false;
                        } else if (cj >= 'a' && cj <= 'z') {
                            if (ci != cj) {
                                return false;
                            } else {
                                j--;
                                break;
                            }
                        } else if (cj >= 'A' && cj <= 'Z') {
                            if (ci - cj != 32) {
                                return false;
                            } else {
                                j--;
                                break;
                            }
                        }
                    }
                } else if (ci >= 'A' && ci <= 'Z') {
                    for (; j >= 0; j--) {
                        if (i == j) {
                            return true;
                        }
                        cj = s.charAt(j);
                        if (cj >= '0' && cj <= '9') {
                            return false;
                        } else if (cj >= 'a' && cj <= 'z') {
                            if (cj - ci != 32) {
                                return false;
                            } else {
                                j--;
                                break;
                            }
                        } else if (cj >= 'A' && cj <= 'Z') {
                            if (ci != cj) {
                                return false;
                            } else {
                                j--;
                                break;
                            }
                        }
                    }
                }
            }
            return true;
        }
    

    Review

    java-12-switch-expressions
    java 12 新特性switch语法,省略了代码块、临时变量,同时支持表达式。使用--enable-preview 开启特性

    Tip

    mac上ll查看权限看到权限后面无意中看到有个@,查了是拓展属性
    拓展属性操作指令xattr

    navicat导出sql文件,使用Tools->Data Transfer 可以将insert语句导成批量插入

    Share

    最近在极课时间上看《数据结构算法之美》,有看到说一致性hash,不是很懂,自己去了解了下,然后输出一篇一致性hash

    相关文章

      网友评论

          本文标题:ARTS第二周

          本文链接:https://www.haomeiwen.com/subject/eqedbqtx.html