字符串的完美度_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 字符串的完美度

字符串的完美度

 2014/6/13 0:21:21  vcdemon  程序员俱乐部  我要评论(0)
  • 摘要:题目详情:我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。现在给定一个字符串,输出它的最大可能的完美度。例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。函数头部Cintperfect(constchar*s);C++intperfect(conststring&s)
  • 标签:完美 字符串

题目详情:

我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同,

而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。

?

现在给定一个字符串,输出它的最大可能的完美度。

例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。

?

函数头部

C

int perfect(const char *s);

C++

int perfect(const string &s);

java

public static int perfect(String s);

?

?

答题说明:

main函数用于方便自行编译,可不完成。 ? ? 首先,在做题目之前,我得吐槽一个答题潜规则. Code 1:
    mono,serif;">
  1. publicclassTest{
  2. //该数组存放字符串中某个字母出现的次数,如:array[0]表示a的个数,array[1]表示b的个数,其余依此类推
  3. staticint[]array=newint[26];
  4. //该变量存放完美度
  5. staticintsum=0;
  6. publicstaticintperfect(Strings){
  7. s=s.toLowerCase();
  8. char[]ch=s.toCharArray();
  9. for(inti='a';i<='z';i++){
  10. for(intj=0;j<ch.length;j++){
  11. if(ch[j]==i){
  12. array[i-97]++;
  13. }
  14. }
  15. }
  16. Arrays.sort(array);
  17. for(inti=0;i<array.length;i++){
  18. array[i]=array[i]*(i+1);
  19. sum=array[i]+sum;
  20. }
  21. returnsum;
  22. }
  23. publicstaticvoidmain(String[]args){
  24. Strings="DAD4538568&^%&^$$$*(\\][[";
  25. intsum=perfect(s);
  26. System.out.println(sum);
  27. }
  28. }
Code 1在本地测试是正常的,但是为什么提交之后不通过呢? 这就涉及到了一个答题的潜规则:Line03-Line05是不可以定义全局变量的. ? ? Code 2:
  1. publicclassTest{
  2. publicstaticintperfect(Strings){
  3. //该数组存放字符串中某个字母出现的次数,如:array[0]表示a的个数,array[1]表示b的个数,其余依此类推
  4. staticint[]array=newint[26];
  5. //该变量存放完美度
  6. staticintsum=0;
  7. s=s.toLowerCase();
  8. char[]ch=s.toCharArray();
  9. for(inti='a';i<='z';i++){
  10. for(intj=0;j<ch.length;j++){
  11. if(ch[j]==i){
  12. array[i-97]++;
  13. }
  14. }
  15. }
  16. Arrays.sort(array);
  17. for(inti=0;i<array.length;i++){
  18. array[i]=array[i]*(i+1);
  19. sum=array[i]+sum;
  20. }
  21. returnsum;
  22. }
  23. publicstaticvoidmain(String[]args){
  24. Strings="DAD4538568&^%&^$$$*(\\][[";
  25. intsum=perfect(s);
  26. System.out.println(sum);
  27. }
  28. }
像Code 2这样提交一次就可以成功通过提交了. ? 其实还有别的一些答题规则,实在是有些摸不着头脑.
发表评论
用户名: 匿名