Algorithm做算法题,Review点评英文文章,Tip总结技术技巧,Share做技术分享。每周打卡一次,这就是ARTS打卡。
1. 做算法题
LeetCode771题. 宝石与石头
题目描述:
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
示例 1:
输入: J = “aA”, S = “aAAbbbb”
输出: 3
示例 2:
输入: J = “z”, S = “ZZ”
输出: 0
解题思路:
本题比较简单,将J中的字符在S中查找统计数量即可,Python中count函数就是做这个事的。不消耗额外空间,空间复杂度O(1)。遍历字符串J,并且每次在S中查找,时间复杂度O(len(J)*len(S))。
解题代码:
class Solution:
def numJewelsInStones(self, J: str, S: str) -> int:
count_num = 0
for j in J:
count_num += S.count(j)
return count_num
2.点评英文文章
文章20 Future Technologies That Will Change the World by 2050 介绍了20项可能在未来改变世界的前沿技术,非常开脑洞。用DNA做计算,能随时间推移的四维打印等等,最让我意外的是零知识证明居然也在榜上,作为区块链中的一项技术,零知识证明能解决很多信息传播问题。
3. 技术技巧
程序对文件读写中常出现编码问题。文件读写一般分两种模式,字符串和字节,分别对应r
,w
和rb
,wb
。如果写用w
,读用rb
就会发生解析错误。字符串的编码也常出错,gbk
,utf-8
容易用混合,读写要一致,才能正确编解码。关于文档读写参考这里,关于编解码问题参考这里。
有时候程序需要远程调用另外一台服务器上的方法,这个过程称为远程过程调用(Remote Procedure Call, RPC)。xmlrpc是基于xml格式和http协议的RPC方法,Python、Java、C++中均有相应的库可以调用。
4. 技术分享
Flink是Apache基金会的顶级开源项目,大有取代Hadoop、Spark之势。在B站尚硅谷频道的Flink课程能详细了解。官网的安装部署文档简洁,例如Flink安装部署参考这里,Windows下启动Flink参考这里。部署好Flink后在Flink中跑一个word count demo参考1,参考2,其中涉及到用Marven构建Flink程序参考这里。
初级的Flink操作完成后,研究一些解决实际问题。如何解决Kafka消费入库到Hbase中?有kafka+flink+hbase数据整合案例参考,也可以用成熟的方案华为云DLI组件实现跨源连接。