看到字母的异位词就想到了26大小的数组,因为都是小写字母,而且需要计算数目,所以是int数组,boolean数组也很常见。通过数组下标标记字母,数组值计算对应字母出现的次数,遍历两个字符串,一个出现一次就对应位置加一,一个对应减1,最后数组全为0则为真。
这个题第一反应暴力法,两层for循环搞定,看了题解的target-num[i]想起来了用map空间换时间,一次循环搞定。一次遍历,将数组的值做key,下标做value,如果map中包含target-num[i]就结束,返回i和map.get(target-num[i]),如果不包含就在map里面填目前遍历得到的数组值和坐标。
HashSet的用法。
# 202. 快乐数
这道题首先想到的是递归,但是写完后发现,无限循环的情况没办法解决,最后看了一下题解,使用Set纪录遍历的数,如果出现了重复或者n==1解除循环。