LeeCode-刷题日记-Day22
43. 字符串相乘
思路:用数组存储每个数字对应相乘的结果,将其存储到对应位置。之后再处理进位的问题。
/**
* @param {string} num1
* @param {string} num2
* @return {string}
*/
var multiply = function(num1, num2) {
if(num1==="0"||num2==="0") return "0";
str1=num1.split('').reverse();
str2=num2.split('').reverse();
let result=[];
for(let i=0;i<str1.length;i++){
for(let j=0;j<str2.length;j++){
result[i+j]=result[i+j]||0;
result[i+j]+=parseInt(str1[i])*parseInt(str2[j]);
}
}
let temp;
for(let k=0;k<result.length;k++){
if(result[k]>9){
temp=Math.floor(result[k]/10);
result[k]=result[k]%10;
result[k+1]=result[k+1]||0;
result[k+1]+=temp;
}
}
return result.reverse().join('');
};
187. 重复的DNA序列
思路:使用哈希表的思想,将字符串逐字符拆分,固定长度10,将其插入哈希表中。重复出现次数加一,若次数大于二则加入答案中。
/**
* @param {string} s
* @return {string[]}
*/
var findRepeatedDnaSequences = function(s) {
let L =10;
let ans = [];
let cnt = new Map();
let n=s.length;
for(let i=0;i<=n-L;++i){
let sub = s.slice(i,i+L);
cnt.set(sub,(cnt.get(sub)||0)+1);
if(cnt.get(sub)===2){
ans.push(sub);
}
}
return ans;
};
- 本文链接:https://archer-lan.github.io/2023/11/20/LeeCode-%E5%88%B7%E9%A2%98%E6%97%A5%E8%AE%B0-Day22/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。