A
题目: 14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 " "。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
我的C++实现:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string s="";
int flag=1,j=0;
if(strs.size()==0)
return s;
if(strs.size()==1)
return strs[0];
int min_len=strs[0].size();
for(int i=1;i<strs.size();i++){
if(min_len>strs[i].size())
min_len=strs[i].size();
}
while(1){
for(int i=1;i<strs.size();i++){
if(strs[i][j]==strs[0][j])
flag=1;
else{
flag=0;
break;
}
}
if(flag==1){
s+=strs[0][j];
if(j<min_len-1)
j++;
else
return s;
}
else
return s;
}
}
};
大概有这五种思路, 一般都会采用第四种, 但是耗时太多
1、所求的最长公共前缀子串一定是每个字符串的前缀子串。所以随便选择一个字符串作为标准,把它的前缀串,与其他所有字符串进行判断,看是否是它们所有人的前缀子串。这里的时间性能是O(m*n*m)。
2、列出所有的字符串的前缀子串,将它们合并后排序,找出其中个数为n且最长的子串。时间性能为O(n*m+m*n*log(m*n))
3、纵向扫描:从下标0开始,判断每一个字符串的下标0,判断是否全部相同。直到遇到不全部相同的下标。时间性能为O(n*m)。
4、横向扫描:前两个字符串找公共子串,将其结果和第三个字符串找公共子串……直到最后一个串。时间性能为O(n*m)。
5、借助trie字典树。将这些字符串存储到trie树中。那么trie树的第一个分叉口之前的单分支树的就是所求。
R
本周三,首张黑洞照片正式发布,该照片是由全球200多位科研人员参与的“事件视界望远镜”(EHT)项目发布。在英国卫报上阅读过一篇有关黑洞介绍的文章。
https://www.theguardian.com/science/2019/jan/11/scientists-close-to-capturing-first-image-of-black-hole-at-the-centre-of-the-milky-way
T
这一周参加了数统学院组织的数统杯,我负责MATLAB编程方面,通过一周MATLAB的学习,我总结出了以下matlab学习方面的方法和技巧:
1.活学活用,语法的学习应该在实践中进步。
2.注意运用官方文档,我在学习中发现一些教材的内容与官方的帮助文档相同,与其看参差不齐的教程,不如直接看官方文档。
https://ww2.mathworks.cn/products.html?s_tid=gn_ps
S
&emsp:在matlab的学习中,通过不断查阅document,总结的一些关于matlab绘图的fill函数的操作。
https://www.jianshu.com/p/c2bb96823acd