Algorithm
题目
题目描述
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。242 valid anagram
题目解答
可以使用先排序后判断的方法来实现,这样的时间复杂度为O(nlog(n))。更好的方法是借助Hash表来实现,可以达到O(n)的时间复杂度。
public class ValidAnagram {
public boolean isAnagram(String s, String t) {
if (null == s || null == t || s.length() != t.length()) {
return false;
}
Map<Character, Integer> map = new HashMap<>();
final char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
final char key = s.charAt(i);
map.put(key, map.getOrDefault(key, 0) + 1);
final char key1 = t.charAt(i);
map.put(key1, map.getOrDefault(key1, 0) - 1);
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
if (0 != entry.getValue()) {
return false;
}
}
return true;
}
}
Review
你可能不知道的SHELLCoolShell左耳朵耗子2012年的关于强大Shell的文章,里面列出了很多有用的命令,看完后收获颇丰。针对实际使用场景,列出我认为暂时可以直接使用的一些操作命令。
!$
上一条命令的最后一个参数
!!
重新执行上一条命令,类似的!curl可以执行上次最近一次的curl命令。现在的情况是使用fzf/c+r等工具来实现,但是对于服务器上未安装这些命令,这种原生支持的命令就非常有用了。
Alt+. 或者Esc .
把上次的命令参数重复显示出来,目前看使用Alt+.较多。
^old^new
这个命令是替换上一条执行语句的字符或者字符串,对于长的拼写错误有很大帮助。
> file.txt
创建一个文件并可输入内容,比touch快。
man ascii
不用google查询了,本地就有的,真的是有事没事请找man。
tail -f path/to/file.log | sed ‘/^Finished: SUCCESS$ q’
当file.log出现Finished: SUCCESS就退出,用于实时过滤日志是否出现某条记录。
curl ifconfig.me
当机器在内网时,可以使用此命令来查看外网信息。
vim scp://username@host//path/to/somefile
vim对远程文件进行编辑
python -m SimpleHTTPServer
一句话实现对当前目录的Http服务,直接使用localhost:8000来进行访问了,这个确实厉害,相见恨晚。
真正的操作了一下,才体会到命令行的强大,要好好学习了。
Tip
使用Surfingkeys时,也可以设置kj为进入到normal模式。具体配置为
imap('kj', '<Esc>');
Share
过去66年的66个发明创造文章中显示了近66年每一年中改变人类的最有意义发明,主要体现在医疗与工业领域。操作系统,特斯拉,无人机,登月车,蓝牙,万维网,地图,虚拟现实,3D打印,当然还有伟大的Iphone。