ARST
Algorithm: 每周一道Leetcode
Review: 每周阅读并点评至少一篇英文技术文章
Tip: 每周学习技术技巧
Share: 每周分享一篇有观点和思考的技术文章
A
Leetcode389—— Find the Difference
题目要求
Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input:
s = "abcd"
t = "abcde"
Output:
e
Explanation:
'e' is the letter that was added.
C++编写
class Solution {
public:
char findTheDifference(string s, string t) {
char res = 0;
for (char &c : s) res ^= c; //首先将字符串s复制到res中
for (char c : t) res ^= c;
/*用位操作,根据异或的性质,相同位返回0
*将相同字符抵消掉,最后只剩下不同的那个字符
*/
return res;
}
};
R
保护自己免受世界上最致命的动物伤害
在中国人们很讨厌的就是老鼠和蚊子,特别是到了夏季,蚊子更是猖獗,想方设法吸人血,不达目的不罢休,昨晚一只蚊子就死缠着我不放,一直在耳边飞,弄得我直到一两点钟才睡着,看完这个文章,如果真的如文章所说的这么好,那也不错,既不用闻驱蚊水那浓厚的味道而感到窒息,也可以安安稳稳睡觉或者办事,实在是一个利器,不过我很担心它这个覆盖面积能有多广,总不能睡觉的时候在床头开个灯在那儿睡吧!
S
这学期的C++课程已经结束,收获颇多,当然C++中的奥秘还很多,这周的代码编写呢看起来确实是非常简单的,甚至有大佬利用STL的accumulate函数直接用一行代码就解决了问题,代码如下
class Solution {
public:
char findTheDifference(string s, string t) {
return accumulate(begin(s), end(s += t), 0, bit_xor<int>());
}
};
也看到另外一个代码通过用哈希表来建立字符和个数之间的映射来解决这道问题,当然对于我来说根本就不知道哈希表是个什么,因此这次也是到官网去看了一下C++ unordered_map是个什么东西,网址如下unordered_map
这其中就包含了对哈希的讲解
T
鉴于C++考试临近,当然压力也有一点大,为了舒缓一下心情,找了一篇文章,这篇文章很有趣同时也很有深意
什么是真正的程序员?