疑问求解答,求路过

adobe2000 2013-07-13 08:48:15
我们要给每个字母配一个1-26之间的整数,具体怎么分配由你决定,但不同字母的完美度不同, 而一个字符串的完美度等于它里面所有字母的完美度之和,且不在乎字母大小写,也就是说字母F和f的完美度是一样的。 现在给定一个字符串,输出它的最大可能的完美度。 例如:dad,你可以将26分配给d,25分配给a,这样整个字符串最大可能的完美度为77。 java public static int perfect(String s);

下面是我写的方法,不知道哪里错了,跪求指点

public class Test {

public static void main(String[] args) {
String str = "dda";
System.out.println(perfect(str));
}

public static int[][] sortArray(int[][] sortArray) {
int[][] array = sortArray;
int length = array.length;
int value = 0;
for (int i = 0; i < length; i++) {
for (int j = 0; j < length - i - 1; j++) {
if (array[j][0] < array[j + 1][0]) {
value = array[j][0];
array[j][0] = array[j + 1][0];
array[j + 1][0] = value;
}
}
}
return array;
}

public static int perfect(String s) {
String str = s.toLowerCase();
int result = 0;
int length = str.length();
int[][] str_info = new int[26][1];
int[] assign_value = new int[length];
for (int i = 0; i < length; i++) {
char letter = str.charAt(i);
if(((int)letter>=97)&&((int)letter<=122)){
int num = (int) (letter - 97);
str_info[num][0]++;
}
assign_value[i] = (26 - i);
}
sortArray(str_info);
for (int i = 0; i < length; i++) {
if(str_info[i][0]!=0){
result += str_info[i][0] * assign_value[i];
}
}
return result;
}

}
...全文
180 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
shy315 2013-07-13
  • 打赏
  • 举报
回复
初始化数组长度26,每个数字代表一个字母出现次数,可以用小写字母ascii减'a'的ascii作为下标, 遍历字符串, 数组由大到小排序, 遍历数组,从大到小分别乘26到1,最后求和。
adobe2000 2013-07-13
  • 打赏
  • 举报
回复
引用 4 楼 rencht 的回复:
没仔细看代码,但是跑了两把都是OK的, LZ给个错误的输入看看呢
我也觉得没错,但网上提交的后没有通过,所有我就纠结了
rencht 2013-07-13
  • 打赏
  • 举报
回复
没仔细看代码,但是跑了两把都是OK的, LZ给个错误的输入看看呢
adobe2000 2013-07-13
  • 打赏
  • 举报
回复
http://hero.pongo.cn/Question/Details?ID=71&ExamID=69 这个是网上那道题的地址,老纠结了~
adobe2000 2013-07-13
  • 打赏
  • 举报
回复
引用 1 楼 tlfu_12344 的回复:
自己调试下不就知道了嘛
我测试的是通过的,网上的一道题,我提交发现错了,不知道错在什么地方
花木兰1闪21A 2013-07-13
  • 打赏
  • 举报
回复
自己调试下不就知道了嘛

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧