[7kyu]Battle of the characters (Easy)

该算法题来自于 codewars【语言: javascript】,翻译如有误差,敬请谅解~

  • 任务
    • 创建函数接收2个变量,比较并返回一个更大的变量。
  • 规则:
    1.每个字母都有自己的权重:A = 1,B = 2,... Y = 25,Z = 26以此类推。
    2.只有大写字母能进行比较。
    3.总数(A + B + C + ...)大的一组被返回。
    4.如果两个组的值一样大,则返回 “Tie!”。

  • 解答
  • 其一
const sum = str => [...str].map(el=>el.charCodeAt()).reduce((r,v)=>r+v,0);
const battle = (x, y) => sum(x) == sum(y) ? 'Tie!' :( sum(x) > sum(y) ? x : y);
  • 其二
const total = word => [...word].reduce((a,b)=>a+(b.charCodeAt()),0)
const battle = (x, y) => total(x) > total(y) ? x : total(y) > total(x) ? y : 'Tie!'
  • 其三
function battle(x, y) {
      var sumx =0;
      var i = x.length;
      while (i--) {
        sumx += x.charCodeAt(i);
      }  
      var sumy =0;
      i = y.length;
      while (i--) {
        sumy += y.charCodeAt(i);
      }  
      if (sumx == sumy) return 'Tie!';  
      return sumx > sumy ? x: y;
}
  • 其四
function battle(x, y) { 
      let r1 = x.split('').reduce( (a,b) => a+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(b),0);
      let r2 = y.split('').reduce( (a,b) => a+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(b),0);
      return r1 > r2 ? x : r1 < r2 ? y : "Tie!";
}
  • 其五
function battle(x, y) {
      var s1 = 0;
      var s2 = 0;
      x.split("").forEach(function(value){
        s1+=value.charCodeAt()-96;
      });
      y.split("").forEach(function(value){
        s2+=value.charCodeAt()-96;
      });
      return s1>s2? x:s1<s2?y:'Tie!'
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,349评论 0 33
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 9,233评论 0 6
  • 渲染: 1 当前屏幕渲染:在GPU的当前屏幕缓冲区中进行的渲染 2 离屏渲染:在GPU当前屏幕缓冲区外另建缓冲区渲...
    adrian920阅读 2,994评论 0 0
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,898评论 18 399
  • 今天是国庆假最后一天,我准备返校,却被困在了半路上—— 一小时前我还在候车厅里,看着眼前的人一批走掉一批又来,一批...
    半座城阅读 5,355评论 0 2