(1)左旋转字符串【slice()】
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>左旋转字符串</title>
<!-- 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例 1:
输入: s = "abcdefg", k = 2
输出: "cdefgab"
示例 2:
输入: s = "lrloseumgh", k = 6
输出: "umghlrlose"
限制:1 <= k < s.length <= 10000
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。-->
<script>
var reverseLeftWords = function(s, n) {
return s.slice(n)+s.slice(0,n);
};
alert(reverseLeftWords("abcdef",2));
</script>
<!-- arrayObject.slice(start,end) -->
</head>
<body>
</body>
</html>
解析
这道题的解答关键在于使用JS字符串的slice方法,
slice() 方法
slice() 提取字符串的某个部分并在新字符串中返回被提取的部分。
该方法设置两个参数:起始索引(开始位置),终止索引(结束位置)。
如果某个参数为负,则从字符串的结尾开始计数。
这个例子裁剪字符串中位置 -12 到位置 -6 的片段:
实例
var str = "Apple, Banana, Mango";
var res = str.slice(-13,-7);
res 的结果是:
Banana
(2)猜数字【循环】
小A 和 小B 在玩猜数字。小B 每次从 1, 2, 3 中随机选择一个,小A 每次也从 1, 2, 3 中选择一个猜。他们一共进行三次这个游戏,请返回 小A 猜对了几次?
输入的guess数组为 小A 每次的猜测,answer数组为 小B 每次的选择。guess和answer的长度都等于3。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>猜数字</title>
<!--
示例 1:
输入:guess = [1,2,3], answer = [1,2,3]
输出:3
解释:小A 每次都猜对了。
示例 2:
输入:guess = [2,2,3], answer = [3,2,1]
输出:1
解释:小A 只猜对了第二次。
限制:
guess的长度 = 3
answer的长度 = 3
guess的元素取值为 {
1, 2, 3} 之一。
answer的元素取值为 {
1, 2, 3} 之一。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/guess-numbers
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。-->
<script>
var game = function(guess, answer) {
var j = 0;
for(i=0;i<3;i++){
if(guess[i]==answer[i])
{
j++;
}
}
return j;
};
alert(game([1,0,3],[1,2,3]));
</script>
</head>
<body>
</body>
</html>
解析
这道题里面有两个长度相同的数组,比较他们中有几个数是相同的,相同的时候就给计数器加一。
(3)整数的各位积和之差【Math.floor】
给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!--给你一个整数 n,请你帮忙计算并返回该整数「各位数字之积」与「各位数字之和」的差。
示例 1:
输入:n = 234
输出:15
解释:
各位数之积 = 2 * 3 * 4 = 24
各位数之和 = 2 + 3 + 4 = 9
结果 = 24 - 9 = 15
示例 2:
输入:n = 4421
输出:21
解释:
各位数之积 = 4 * 4 * 2 * 1 = 32
各位数之和 = 4 + 4 + 2 + 1 = 11
结果 = 32 - 11 = 21
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/subtract-the-product-and-sum-of-digits-of-an-integer
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。-->
<script>
var subtractProductAndSum = function(n)
{
var mul =1;
var add = 0;
while(n>0){
num = n%10;
mul= num*mul;
add= num+add;
// n = n/10; 不能用这句 是因为这句的结果是有小数点的
/*
返回小于等于x的最大整数:
Math.floor(1.6);
以上实例将输出:1
*/
n = Math.floor((n /= 10));
}
return mul-add;
}
alert(subtractProductAndSum(13));
</script>
</head>
<body>
</body>
</html>
解析
这个题的关键使用了 Math.floor方法
Math.floor()
Math.floor(x) 的返回值是 x 下舍入最接近的整数:
实例
Math.floor(2.7); // 返回 2
(4)将数字变成 0 的操作次数 【循环】
给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<!-- 给你一个非负整数 num ,请你返回将它变成 0 所需要的步数。 如果当前数字是偶数,你需要把它除以 2 ;否则,减去 1 。
示例 1:
输入:num = 14
输出:6
解释:
步骤 1) 14 是偶数,除以 2 得到 7 。
步骤 2) 7 是奇数,减 1 得到 6 。
步骤 3) 6 是偶数,除以 2 得到 3 。
步骤 4) 3 是奇数,减 1 得到 2 。
步骤 5) 2 是偶数,除以 2 得到 1 。
步骤 6) 1 是奇数,减 1 得到 0 。
示例 2:
输入:num = 8
输出:4
解释:
步骤 1) 8 是偶数,除以 2 得到 4 。
步骤 2) 4 是偶数,除以 2 得到 2 。
步骤 3) 2 是偶数,除以 2 得到 1 。
步骤 4) 1 是奇数,减 1 得到 0 。
示例 3:
输入:num = 123
输出:12
提示:
0 <= num <= 10^6
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。-->
<script>
var numberOfSteps = function(num) {
if(num==0){
return 0;
}
else{
for(i=0;num!=0;i++)
{
if(num%2==0){
num = num/2;
}
else
{
num = num-1;
}
}
return i;
}
};
alert(numberOfSteps(12));
/*
除以2的次数就是二进制的位数,奇数的次数就是除最高位以外的1的个数。
例如:23 二进制即 10111,共5位,除最高位后面有3个1,所以总步数为8
大佬的代码:
var str = num.toString(2);
return str.length + str.replace(/0/g,"").length - 1;
//g 全局替换
作者:aleafworld
链接:https://leetcode-cn.com/problems/number-of-steps-to-reduce-a-number-to-zero/solution/wu-xu-xun-huan-2xing-dai-ma-gao-ding-by-aleafworld/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。*/
</script>
</head>
<body>
</body>
</html>
解析
使用了条件和循环的操作,计算一个数到零的操作,首先先判断这个数是不是零,非零时再进行循环的“变为0”的操作,奇数和偶数分情况讨论操作,每一次操作都在循环内完成,所以循环次数就是操作的次数。
(5)宝石与石头 【indexOf】
给定字符串J 代表石头中宝石的类型,和字符串 S代表你拥有的石头。 S 中每个字符代表了一种你拥有的石头的类型,你想知道你拥有的石头中有多少是宝石。
J 中的字母不重复,J 和 S中的所有字符都是字母。字母区分大小写,因此"a"和"A"是不同类型的石头。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>宝石与石头</title>
<!--示例 1:
输入: J = "aA", S = "aAAbbbb"
输出: 3
示例 2:
输入: J = "z", S = "ZZ"
输出: 0
注意:
S 和 J 最多含有50个字母。
J 中的字符不重复。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/jewels-and-stones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。-->
<script>
var numJewelsInStones = function(J, S) {
var n = 0;
for(var i= 0;i<S.length;i++)
{
//indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
//如果没有找到匹配的字符串则返回 -1。
if(J.indexOf(S[i])!=-1)
{
n=n+1;
}
}
return n;
};
alert(numJewelsInStones("a","axsx"));
</script>
</head>
<body>
</body>
</html>
解析
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。如果没有找到匹配的字符串则返回 -1。所以只需要遍历S字符串,看J中是否有S[i],只要存在就进行加一的操作,这样就可以找到S中几个J中的元素了。