Ahri-珊
day7将分享LeetCode算法题168,169,171以及用React写的音乐播放器页面。
LeetCode
今天的三道题涉及到数组与字符串的处理。
168 .Excel Sheet Column Title
根据数字输出对应的字符串,1-26分别代表A-Z.。
心路历程
(本题可以直接将A-Z存入字符串,我用的ASCII码来查找数字对应的字母)常见字符的ASCII码值如下:空格的ASCII码值为32;数字0到9的ASCII码值分别为48到57;大写字母“A”到“Z”的ASCII码值分别为65到90;小写字母“a”到“z”的ASCII码值分别为97到到122。
1.方法:递归
2.出口:n<=26,可直接将数字转换成字符;
3.n>26:n/26,再将余数与除数分别编码。(注意:刚好整除的时候余数返回26,除数减一)
4.特殊情况:n=0时,应返回空字符串
代码:
var convertToTitle = function(n) {
if(n==0)
return '';
if(n<=26)
{
return String.fromCharCode(n+64);
}
else
{
if(n%26==0)
return convertToTitle(Math.floor(n/26)-1)+convertToTitle(26);
else
return convertToTitle(Math.floor(n/26))+convertToTitle(n%26);
}
};
169. Majority Element
找出数组中出现次数大于2/n的元素
心路历程
1.求出数组中每个元素出现的次数
2.如何完成1:建立哈希表,每遍历一个元素,哈希表中该元素对应键值+1(注意:元素第一次出现时需要初始化hash[nums[i]]);
3.当有一个元素出现的次数大于n/2时,返回该元素
代码:
var majorityElement = function(nums) {
var hash = {}
for(let i=0;i<nums.length;i++)
{
if(!hash[nums[i]])
hash[nums[i]] = 0;
hash[nums[i]] ++;
if(hash[nums[i]]>nums.length/2)
return nums[i];
}
return '';
171. Excel Sheet Column Number
168题的逆运算。
心路历程
1..第一位字符代表26的(s.length-1)次方*字符值
2.将每一个字符代表的值加起来
代码:
var titleToNumber = function(s) {
var num = 0;
var temp;
for(let i=0;i<s.length;i++)
{
if(i==s.length-1)
num = num+(s[i].charCodeAt()-64);
else
{
temp = s[i].charCodeAt()-64;
for(let j=0;j<s.length-i-1;j++)
{
temp = temp*26;
}
num = num+temp;
}
}
return num;
};
React编写的音乐播放器界面
准备用React写个音乐播放器,目前只写好了界面0.0。先放两张界面图,详细的等写好了再放。
Comments