codewars练习(javascript)-2021/1/27

codewars-js练习

2021/1/27

github 地址

my github地址,上面有做的习题记录,不断更新…

【1】<7kyu>【Exes and Ohs】

Check to see if a string has the same amount of 'x’s and 'o’s. The method must return a boolean and be case insensitive. The string can contain any char.

检查一个字符串是否有相同数量的’x’和’o’。该方法必须返回一个布尔值,且不区分大小写。字符串可以包含任何字符。

example

XO("ooxx") => true
XO("xooxx") => false
XO("ooxXm") => true
XO("zpzpzpp") => true // when no 'x' and 'o' is present should return true
XO("zzoo") => false

solution

<script type="text/javascript">
 		function XO(str) {
 			// 将str全部转为小写。并分割放到数组中
 			var strArr = str.toLowerCase().split('');
 			var xArr = [];
 			var oArr = [];
 			// 遍历数组,将数组中x和o分别放到新数组中
 			for(var i=0;i<strArr.length;i++){
 				if(strArr[i] == 'x'){
 					xArr.push(strArr[i]);
 				}else if(strArr[i] == 'o'){
 					oArr.push(strArr[i]);
 				}
 			}
 			// console.log('x:',xArr);
 			// console.log('o:',oArr);
 			// 判断两个新数组的长度,若相等则说明包含数量相同
 			if(xArr.length == oArr.length){
 				return true;
 			}
 			return false;
 		}
 		
		// 验证
		console.log(XO('xo'));//true;
		console.log(XO("xxOo"));//true;
		console.log(XO("xxxm"));//false;
		console.log(XO("ooom"));//false
	</script>
【2】<7kyu>【Find the stray number】

You are given an odd-length array of integers, in which all of them are the same, except for one single number.

Complete the method which accepts such an array, and returns that single different number.

The input array will always be valid! (odd-length >= 3)

给定一个奇数长度的整数数组,其中除了一个数字之外,其他都是相同的。完成接受这样一个数组的方法,并返回一个不同的数字。输入数组将始终有效!(奇数长的> = 3)

example

[1, 1, 2] // 2
[17, 17, 3, 17, 17, 17, 17] // 3

solution

<script type="text/javascript">
 		function stray(numbers) {
 			console.log(numbers);
 			var len = numbers.length;
 			var map = {};
 			if(len % 2 !=0){
	 			for(var i=0;i<len;i++){
	 				// 获取到每个元素
	 				var key = numbers[i];
	 				// console.log('key',key);
	 				// 通过判断新对象中是否含有,则来判断每个数出现的次数
	 				if(map[key]){
	 					map[key] ++;
	 				}else{
	 					map[key] =1;
	 				}
	 			}
	 			// console.log('map',map);
	 			for(var key in map){
	 				// console.log(map[key]);
	 				if(map[key] == 1){
	 					return parseInt(key);
	 				}
	 			}
 			}
 			return 0;
 		}
 		
		// // // 验证
		console.log(stray([1,2]));//0
		console.log(stray([1,1,2]));//2;
		console.log(stray([17,17,3,17,17,17,17]));//3;
		console.log(stray([1,2,1]));//2
		console.log(stray([8, 1, 1, 1, 1, 1, 1 ]));//8
	</script>
【3】<7kyu>【Odd or Even?】

Given a list of numbers, determine whether the sum of its elements is odd or even.

Give your answer as a string matching "odd" or "even".

If the input array is empty consider it as: [0] (array with a zero).

example

odd_or_even([0])          ==  "even"
odd_or_even([0, 1, 4])    ==  "odd"
odd_or_even([0, -1, -5])  ==  "even"

solution

<script type="text/javascript">
 		function oddOrEven(array) {
 			// console.log(array);
 			var sum =0;
 			for(var i=0;i<array.length;i++){
 				sum += array[i];
 			}
 			// console.log('sum',sum);
 			if(sum %2 == 0){
 				return 'even';
 			}
 			return 'odd';
 		}
 		
		// 验证
		console.log(oddOrEven([0]));// 'even'
    	console.log(oddOrEven([]));//'even'
    	console.log(oddOrEven([0,1,4]));//'odd'
    	console.log(oddOrEven([-1023, -1, 3]));// 'odd'
	</script>
【4】<7kyu>【Disemvowel Trolls】

Your task is to write a function that takes a string and return a new string with all vowels removed.

For example, the string “This website is for losers LOL!” would become “Ths wbst s fr lsrs LL!”.

Note: for this kata y isn’t considered a vowel.

编写一个函数,接受一个字符串并返回一个删除了所有元音的新字符串。注意:这个形符y不被认为是元音。

example

"This website is for losers LOL!"//"Ths wbst s fr lsrs LL!"

solution

<script type="text/javascript">
 		function disemvowel(str) {
 			// console.log(str);
 			var vowelArr = ['a','A','e','E','i','I','o','O','u','U'];
 			// console.log(vowelArr);
 			var strArr = str.split('');
 			// console.log(strArr);
 			for(var i=0;i<vowelArr.length;i++){
 				for(var j=0;j<strArr.length;j++){
 					if(vowelArr[i] == strArr[j]){
 						// console.log(strArr[j]);
 						strArr.splice(j,1);
 					}
 				}
 			}
 			var newStr = strArr.join('');
 			// console.log(newStr);
 			return newStr;
 		}
 		
		// 验证
		console.log(disemvowel("This website is for losers LOL!"));//"Ths wbst s fr lsrs LL!"
	</script>
【5】<6kyu>【Help the bookseller !】

A bookseller has lots of books classified in 26 categories labeled A, B, … Z. Each book has a code c of 3, 4, 5 or more characters. The 1st character of a code is a capital letter which defines the book category.

In the bookseller’s stocklist each code c is followed by a space and by a positive integer n (int n >= 0) which indicates the quantity of books of this code in stock.

获取到此类别的总数量

example

b = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"]
c = ["A", "B"]
res = "(A : 200) - (B : 1140)"//结果
stockList(b, c), res)

b = ["CBART 20", "CDXEF 50", "BKWRK 25", "BTSQZ 89", "DRTYM 60"]
c = ["A", "B", "C", "W"]
res = "(A : 0) - (B : 114) - (C : 70) - (W : 0)"//结果
stockList(b, c), res)

solution

<script type="text/javascript">
 		function stockList(listOfArt, listOfCat){
 			if (!listOfArt.length || !listOfCat.length) return ''
 			return listOfCat.map(w => {
    			const s = listOfArt.reduce((a, b) => a + (b.charAt(0) === w ? +b.split(' ')[1] : 0), 0)
    				return `(${w} : ${s})`
  			}).join(' - ')
 		}
 		
		// 验证
		b = ["ABAR 200", "CDXE 500", "BKWR 250", "BTSQ 890", "DRTY 600"]
		c = ["A", "B"]
		console.log(stockList(b, c));//"(A : 200) - (B : 1140)"
	</script>

以上为自己思路供大家参考,可能有更优的思路。(最后一题为大佬思路,绝)

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值