2020年6月23日打卡
打卡 2020年6月23日
计划与安排
预期每天在博客中叙述如下内容:
- 每日做leetcode的感悟与题解
- 学习操作系统与计网的学习笔记
- 小说的读后感
希望能坚持下去
Leetcode 67. 二进制求和
题目描述:
给你两个二进制字符串,返回它们的和(用二进制表示)。
输入为 非空 字符串且只包含数字 1 和 0。
限制:
每个字符串仅由字符 ‘0’ 或 ‘1’ 组成。
1 <= a.length, b.length <= 10^4
字符串如果不是 “0” ,就都不含前导零。
没什么难度的题,首先想到的解法就是把短的字符串按位加到长的上,设一个进位值,由于正着遍历不方便故最开始就先翻转两个字符串,以下为代码:
string addBinary(string a, string b) {
int carry = 0, i = 0;
string c;
if(a.size() < b.size()){
c = a;
a = b;
b = c;
}
reverse(a.begin(), a.end());
reverse(b.begin(), b.end());
for(i = 0; i < b.size(); i++){
a[i] += (b[i] - '0' + carry);
carry = 0;
if(a[i] >= '2'){
a[i] = a[i] - 2;
carry = 1;
}
}
while(carry && i < a.size()){
a[i] += carry;
carry = 0;
if(a[i] >= '2'){
a[i] = a[i] - 2;
carry = 1;
}
i++;
}
reverse(a.begin(), a.end());
if(carry){
return "1" + a;
}else{
return a;
}
}
代码写的不怎么样,不过算是做出来了。
另外在题解中发现了一种位运算的方法:
对a,b两者进行按位异或运算 answer = a ^ b,answer为无进位情况下的加法值,然后计算 carry = (a & b) << 1 ,carry为进位的值,再计算 answer ^ carry 与 (answer & carry) << 1 得出第二次计算的answer与carry,重复这个循环直至carry为0。
学习笔记
TCP(transmission control protocol)和IP(internet protocol)是因特网中两个最为重要的协议,IP协议定义了在路由器和端系统之间发送和接收的分组格式,因特网的主要协议统称为TCP/IP。
分布式应用程序:涉及多台相互交换数据的端系统。
一个协议定义了在两个或多个通信实体之间交换的报文格式和次序,以及报文发送和/或接收一条报文或其他事件所采取的动作。
FTTH:(Fiber to the home)光纤到户
今天看的有点少,状态不是很好。
这位先生我能占用您一点时间吗……
买来《死灵之书》有大半年没看了,虽然已经基本看过一遍了还是想重温一下。
和第一次看一样的进度,短篇的话就一天两篇,长篇看情况争取一天;之前给朋友推荐过克苏鲁,直接被朋友以过于猎奇拒绝了,这哪里猎奇了啊喂!
说实话我感觉洛夫克拉夫特早年的作品与其说猎奇不如说就是那种传统欧美魔幻小说,今天看的是《洞中兽》和《炼金术士》,我个人不是很喜欢《炼金术士》这个短篇,感觉像平淡的叙事小说,既没什么画面感也不觉得紧张,整体给人一种很失落的气氛,查尔斯巫师还没有城堡的破败感给我的印象深,可能是我对巫师一类的大概只能想到哈利波特吧。
《洞中兽》是个很有意思的短篇,核心完全在描写主人公的心理,那种独自在黑暗洞穴的紧张感与一会胡思乱想一会镇定应对的反应,感觉很贴近人的真实反应,反复提及的结核病患者也算是一个伏笔,在渲染洞穴气氛的同时也暗示了“兽”的真身。