华为机试:名字的漂亮度

来源:互联网 发布:手机淘宝怎么换用户 编辑:程序博客网 时间:2024/06/06 21:37

题目描述:

描述

给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。
每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。
给出多个名字,计算每个名字最大可能的“漂亮度”。

知识点字符串运行时间限制0M内存限制0输入

整数N,后续N个名字

N个字符串,每个表示一个名字


输出

每个名称可能的最大漂亮程度

样例输入2 zhangsan lisi样例输出192 101代码实现:

#include <iostream>#include <string>#include <stdlib.h>#include <vector>using namespace std;int main(){int i = 0,nNumbers = 0;char szName[100] = {0};int nNameLens = 0;int nSum = 0;int data[26] = {0};int j = 0,k = 0,nTemp = 0;cin >> nNumbers;while(nNumbers--){cin >> szName;nSum = 0;nNameLens = strlen(szName);for(i = 0; i < nNameLens; i++){/* 大写字母转换为小写字母 */if(szName[i] >= 'A' && szName[i] <= 'Z'){szName[i] = szName[i] + 32;}data[szName[i] - 'a']++;}/*对数组从大到小排序,采用冒泡排序*/for(j = 0;j < 25; j++){for(k = j+1; k < 26; k++){if(data[k] > data[j]){nTemp = data[k];data[k] = data[j];data[j] = nTemp;}}}for(i = 0; i < 26; i++){if(data[i] == 0){break;}nSum = nSum + (26-i)*data[i];/* 清空这个数组 */data[i] = 0;}cout << nSum << endl;;}return 0;}




0 0