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
网友评论