破解字母在 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';

输出说明

因为在所有炸弹爆炸后,两支队伍的得分将相同。

示例

以下为代码 -

 Live Demo

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

更新日期:2021 年 4 月 22 日

90 次浏览

开启 职业生涯

通过完成课程获得认证

开始
广告