破解字母在 JavaScript 中造成的问题
问题
考虑以下情况:两队字母争吵。两队士兵及其体重如下 -
TeamA
| 士兵 | 体重 |
|---|---|
| A | 1 |
| B | 2 |
| C | 3 |
| D | 4 |
TeamB
| 士兵 | 体重 |
|---|---|
| W | 1 |
| X | 2 |
| Y | 3 |
| Z | 4 |
除士兵外,场地上还标有“!”的炸弹,炸弹会杀死相邻两侧的士兵。
例如:“A!BC”会产生“C”,“!!CC!!”将产生“”。
我们的函数需要找出当场上所有炸弹爆炸时哪一队获胜,或者两队体重相同时。
例如,如果函数的输入为 -
输入
const str = '!WX!YZ!DC!BA!';
输出
const output = 'Tie';
输出说明
因为在所有炸弹爆炸后,两支队伍的得分将相同。
示例
以下为代码 -
const str = '!WX!YZ!DC!BA!';
const stringFight = (str) => {
const map = {
'D': 4,'C': 3,'B': 2,'A': 1,
'Z': -4,'Y': -3,'X': -2,'W': -1
};
const arr = [];
const arr1 = str.split('');
for(let i=0;i<str.length;i++){
if(arr1[i-1] !== '!' && arr1[i] !== '!' && arr1[i+1] !== '!'){
arr.push(arr1[i]);
};
};
const sum = arr.reduce((a, b) => a + (map[b] ? map[b] : 0), 0);
if(sum < 0){
return 'Team B';
if(sum < 0){
return 'Team B';
}else if(sum > 0){
return 'Team A';
}else{
return 'Tie';
};
};
console.log(stringFight(str));输出
Tie
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP