帮我看看今日头条第一题为什么运行错误,谢谢各位了

import java.util.*;
import java.util.Scanner;
public class Main {
    public static void main(String args[]) {
        Scanner cin = new Scanner(System.in);
        int n=cin.nextInt();
        if (n<=50){
            int maxsum=0;
            String array[]=new String[50];
            for (int i=0;i<n;i++){
                array[i]=cin.next();
            }
            Temp carray[]=new Temp[7];
            for (int i=0;i<7;i++){
                Temp temp=new Temp();
                temp.c=(char) ('A'+i);
                temp.value=0;
                carray[i]=temp;
            }
            int stringLen=0; //对于每个字符串,排第一的字母权值+12,第二+11。。。 for (int i=0;i<n;i++){
                String s=array[i];
                stringLen=s.length();
                for (int j=0,t=12;j<stringLen;j++,t--){
                    carray[s.charAt(j)-'A'].value+=t;
                }
                stringLen=0;
            }
            //排序;
            for (int i=7;i>0;i--){
                for (int j=1;j<i;j++){
                    if (carray[j-1].value<carray[j].value){
                        //交换
                        Temp temp=new Temp();
                        temp=carray[j];
                        carray[j]=carray[j-1];
                        carray[j-1]=temp;
                    }
                }
            }
            //将字符串转为数字;
            int arraynum[]=new int[50];
            for (int i=0;i<n;i++){
                String s=array[i];
                int len=s.length();
                for (int j=0;j<len;j++){
                    char sc=s.charAt(j);
                    for(int m=0;m<len;m++){
                        if (sc==carray[m].c) {
                            arraynum[i]+=(9-m)*Math.pow(10,len-1-j);
                            break;
                        }
                    }
                }
                maxsum+=arraynum[i];
            }
            System.out.println(maxsum);
        }
    }
}
class Temp{
    char c='A';//代表字母
    int  value=0;//代表权值;
}


全部评论
之后我们会开放练习的,到时候就会有测试用例了
点赞 回复 分享
发布于 2016-04-27 22:06
感觉是因为你的代码没有考虑字符串的长度可能不等吧,要优先考虑长的字符串: int stringLen=0; //对于每个字符串,排第一的字母权值+12,第二+11。。。 for (int i=0;i<n;i++){ String s=array[i]; stringLen=s.length(); for (int j=0,t=12;j<stringLen;j++,t--){ carray[s.charAt(j)-'A'].value+=t; } stringLen=0; } 应该从每个字符串的尾部开始加权值把(从1到12)。 感觉是这样,并没有验证。。。
点赞 回复 分享
发布于 2016-04-27 22:35

相关推荐

小红书 后端开发 总包n+8w+期权
点赞 评论 收藏
分享
拉丁是我干掉的:把上海理工大学改成北京理工大学。成功率增加200%
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务