閱讀752 返回首頁    go 阿裏雲 go 技術社區[雲棲]


龐果網之字符串的完美度

題目詳情

我們要給每個字母配一個1-26之間的整數,具體怎麼分配由你決定,但不同字母的完美度不同,

而一個字符串的完美度等於它裏麵所有字母的完美度之和,且不在乎字母大小寫,也就是說字母F和f的完美度是一樣的。


現在給定一個字符串,輸出它的最大可能的完美度。

例如:dad,你可以將26分配給d,25分配給a,這樣整個字符串最大可能的完美度為77。


/*********************************
*   日期:2013-11-03
*   作者:SJF0115
*   題號: 題目 字符串的完美度
*   來源:https://hero.pongo.cn/Question/Details?ID=71&ExamID=69
*   結果:AC
*   來源:龐果網
*   總結:
**********************************/
#include<iostream>
#include<stdio.h>
#include<string>
using namespace std;

int cmp(const void*a,const void*b)  
{  
	return *(int*)b - *(int*)a;  
}  

int perfect(const string &s){
	int i;
	int len = s.size();
	int count[26] = {0};
	//統計字母個數
	for(i = 0;i < len;i++){
		if(s[i] >= 'A' && s[i] <= 'Z'){
			count[s[i] - 'A'] ++;
		}
		else if(s[i] >= 'a' && s[i] <= 'z'){
			count[s[i] - 'a'] ++;
		}
	}
	//從大到小排序
	qsort(count,26,sizeof(count[0]),cmp);
	int perfectDegree = 26;
	int sum = 0;
	//計算完美度
	for(i = 0;i < 26;i++){
		sum += count[i] * perfectDegree;
		perfectDegree --;
	}
	return sum;
}

int main()
{   
	int i,n;
	string str;
	while(cin>>str){
		printf("%d\n",perfect(str));
	}
    return 0;
}



天貓搞活動。。。。。。。。

 我在用來往,用它我們就能免費語聊!11月1日到11月9日用淘寶賬號登陸我還能送你2元雙11現金紅包!點擊 點擊打開鏈接 ,趕緊拿紅包吧! 

最後更新:2017-04-03 14:54:03

  上一篇:go 給電腦裝完係統之後,發現U盤少了幾個G!
  下一篇:go 把vim打造成一個全能IDE