📜  数组中字符串字符的加权和| 2套(1)

📅  最后修改于: 2023-12-03 15:40:02.773000             🧑  作者: Mango

数组中字符串字符的加权和

本文将介绍两种关于计算数组中字符串字符的加权和的方法,分别为使用for循环和使用reduce()函数。两种方法的实现代码均使用JavaScript语言。

方法一:使用for循环

思路:

  1. 遍历数组中的每一个字符串。
  2. 对于每一个字符串,再进行for循环遍历其中的每一个字符。
  3. 将每一个字符的ASCII码值乘上它在字符串中的位置,再将所有字符的乘积累加起来,得到该字符串的加权和。
  4. 将所有字符串的加权和累加起来,得到最终结果。

代码实现:

function calculateWeightedSum(arr) {
  let sum = 0;
  for (let i = 0; i < arr.length; i++) {
    const str = arr[i];
    let strSum = 0;
    for (let j = 0; j < str.length; j++) {
      strSum += (str.charCodeAt(j) - 64) * (j + 1);
    }
    sum += strSum;
  }
  return sum;
}
方法二:使用reduce()函数

思路:

  1. 调用数组的reduce()函数,初始值为0。
  2. 对于每一个字符串,使用split()方法将其拆分成字符数组。
  3. 对于每一个字符,计算其ASCII码值乘上它在字符串中的位置,再将所有字符的乘积累加起来,得到该字符串的加权和。
  4. 将所有字符串的加权和累加起来,得到最终结果。

代码实现:

function calculateWeightedSum(arr) {
  return arr.reduce((sum, str) => {
    const chars = str.split('');
    const strSum = chars.reduce((acc, char, index) => {
      return acc + (char.charCodeAt(0) - 64) * (index + 1);
    }, 0);
    return sum + strSum;
  }, 0);
}

以上两种方法的时间复杂度均为O(n^2),但使用reduce()函数可以使代码更加简洁易懂。因此,当数组中的字符串长度较大时,建议使用方法二。