名字的漂亮度

题目描述:

给出一个名字,该名字有26个字符串组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。

每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个字母拥有相同的“漂亮度”。字母忽略大小写。

给出多个名字,计算每个名字最大可能的“漂亮度”。

知识点: 字符串

输入: 整数N,后续N个名字;N个字符串,每个表示一个名字

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

样例输入: 2 zhangsan lisi

样例输出: 192 101

代码:

#include <iostream>
#include <string>
#define MAX 100
using namespace std;
int main()
{
	int n, i, j, k, len, temp;
	cin >> n;
	string str[MAX];
	for (i = 0; i < n; i++)
		cin >> str[i];
	for (i = 0; i < n;i++)
	{
		int sum = 0, count[26] = { 0 };
		len = str[i].size();
		for (j = 0; j < len; j++)
		{
			if (str[i][j] >= 'A'&&str[i][j] <= 'Z')
				str[i][j] = str[i][j] + 'a' - 'A';
		}
		for (j = 0; j < len; j++)
			count[str[i][j] - 'a']++;
		for (j = 0; j < 25; j++)
			for (k = j + 1; k < 26; k++)
				if (count[j] < count[k])
				{
					temp = count[j];
					count[j] = count[k];
					count[k] = temp;
				}
		j = 0;
		while (count[j] != 0&&i<26)
		{
			sum = sum + count[j] * (26 - j);
			j++;
		}
		cout << sum << endl;
	}
	cin.get();     //用于调试时看清执行结果,提交代码前必须删除,否则会导致系统显示超时
	cin.get();
	return 0;
}
得分运行时间内存复杂度最大嵌套深度
100(100)63ms2068KB125

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值