偶然发现了一个新的刷题网站——Codewars,相较于我们常用的力扣,这个网站多了可以跟身边人进行排名这个功能。不过有一点该网站是全英文的,用个翻译软件翻译下也是可以的。接下来让我们一起做做里面的题目吧!
分享我做的题目与解析
Create Phone Number(生成电话号码)
编写一个接受10个整数( 0到9之间 )的数组的函数,该函数以电话号码的形式返回这些数字的字符串。
Example:
createPhoneNumber([1, 2, 3, 4, 5, 6, 7, 8, 9, 0])
// => returns "(123) 456-7890"
注:别忘了右括号后面的空格!
解析
首先定义一个字符串num,再利用for循环和replace()方法将num里面的x一个个替换成传入的numbers。
代码
function createPhoneNumber(numbers){
var num = "(xxx) xxx-xxxx";
for(var i = 0; i < numbers.length; i++){
num = num.replace('x', numbers[i]);
}
return num;
}
Does my number look big in this?
水仙花数是一个正数,它是它自己的数字的和,每一个数字的幂在一个给定的底数。在这个形中,我们将把自己限制在十进制(以10为基数)。
Example:
153(3位数字)是水仙花数:
1^3 + 5^3 + 3^3 = 1 + 125 + 27 = 153
1652(4位数字),这不是:
1^4 + 6^4 + 5^4 + 2^4 = 1 + 1296 + 625 + 16 = 1938
注:你的代码必须返回true或false(不是'true'和'false'),这取决于给定的数字是否是以10为基数的自恋数字。这在你的语言中可能是真或假,例如PHP不需要对文本字符串或其他无效输入进行错误检查,只将有效的正非零整数传递到函数中。
解析
首先用string()方法和split()方法将value转换为字符串数组,再用for循环和math.pow()方法得到每一位的temp.length次方将其加起来,与传入的value进行判断返回true或false。
代码
function narcissistic(value) {
var temp = String(value).split("");
var ans = 0;
var n = temp.length;
for (let i = 0; i < n; i++) {
ans = ans + Math.pow(temp[i], n);
}
return ans == value;
}
Count characters in your string(统计字符串个数)
计算字符串中出现的所有字符。如果您有一个像aba这样的字符串,那么结果应该是{'a': 2, 'b': 1}。
Example:
count("aba")//=> returns { a: 2, b: 1 }
count("")//=> returns{}
注:字符串是空的话,那么结果应该是空的对象字面量{}
解析
首先创建一个空对象,通过split()方法将string转换成字符串数组。再遍历数组,并判断在count中是否存在s
代码
function count(string) {
var count = {}
string.split('').forEach(function(s){
count[s] ? count[s]++ : count[s] = 1
})
return count
}
心得
刷Codewars的初体验:
刚开始去刷Codewars的时候,基本都是难度为6kyu的题目,也就是一些简单题,这些题目都是平台随机给题的。如果是和我一样刚开始接触的人,从简单题刷起是最合适的。个人觉得Codewars上的题目还是蛮有意思的,解法也有很多,最有趣的是它会通过你的解法来给你相应的分数,还可以和周围的人进行排名。
在刷题的过程中,随着题目难度的上升肯定会遇到一些问题,有的甚至不知道该从哪里下手,但通过评论区看一些大佬的解法自己又会有些思路。总结一下,Codewars是个很好的编程刷题平台,希望自己能一直坚持刷下去。