这是我参与8月更文挑战的第13天,活动详情查看:8月更文挑战
1945. 字符串转化后的各位数字之和
思路分析
力扣第一题,向来是遍历。这道题无非是先讲字母字符串转化为数字,需要注意的是a代表1而不是我们常写的0,因此有
for(int i = 0; i < s.size(); i ++){
tmp += to_string((s[i] - 'a') + 1);
}
同时根据k的大小,将每位数字求和并再次转化为字符串。然而这里很容易出一个问题导致自己算错,就是将字符转化为int的时候,是用ascii码转化的,这和我们的预期数值不符。因此改为
for(int i = 0; i < tmp.size(); i ++){
ret += int(tmp[i] - '0');
}
即可。
1948. 删除系统中的重复文件夹
思路分析
这道题如果是穷举的思路的话,无疑是很难穷举的,要将所有可能的两个节点都遍历一次dfs,n方本身是没有多难,但每对节点都要dfs未免伤脑筋,因此我们要想办法记录某节点的子树,只要量化了这个点,就可以轻松的进行n方比较了。
如图
文件夹 的子树的括号表达式为 .对于value,就使用这个表达式出现的次数,即每次获取到都++。
这样就可以在一次遍历的过程中使用dfs获取每个节点的值,然后再dfs删除所有待删除节点(即map中该节点生成的表达式的数量!=1)即可。
这道题并没有写出代码,归根到底是自己字典树比较薄弱,周末考虑做一期字典树特别篇。