在这个问题中,我们得到了一个字符串str []的数组。我们的任务是找到数组中所有字符串的分数。分数定义为字符串位置与字符串字符字母值之和的乘积。
让我们举个例子来了解这个问题,
输入值
str[] = {“Learn”, “programming”, “tutorials”, “point” }
说明
“学习”的位置− 1→
sum = 12 + 5 + 1 + 18 + 14 = 50. Score = 50
“编程”的位置-2→
sum = 16 + 18 + 15 + 7 + 18 + 1 + 13 + 13 + 9 + 14 + 7 = 131 Score = 262
“教程”的位置-1→
sum = 20 + 21 + 20 + 15 + 18 + 9 + 1 + 12 + 19 = 135 Score = 405
“点”的位置− 1→
sum = 16 + 15 + 9 + 14 + 20 = 74 Score = 296
为了解决这个问题,一种简单的方法将遍历数组的所有字符串。对于每个字符串,存储位置并找到该字符串的字母值之和。乘积和求和并返回乘积。
步骤1-遍历字符串并存储位置,对于每个字符串,请遵循步骤2和3-
步骤2-计算字符串字母的总和。
步骤3-打印位置和总和的乘积。
用来说明上述解决方案工作原理的程序,
#include <iostream> using namespace std; int strScore(string str[], string s, int n, int index){ int score = 0; for (int j = 0; j < s.length(); j++) score += s[j] - 'a' + 1; score *= index; return score; } int main(){ string str[] = { "learn", "programming", "tutorials", "point" }; int n = sizeof(str) / sizeof(str[0]); string s = str[0]; for(int i = 0; i<n; i++){ s = str[i]; cout<<"The score of string ' "<<str[i]<<" ' is "<<strScore(str, s, n, i+1)<<endl; } return 0; }
输出结果
The score of string ' learn ' is 50 The score of string ' programming ' is 262 The score of string ' tutorials ' is 405 The score of string ' point ' is 296