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

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;//代表权值;
}


全部评论
感觉是因为你的代码没有考虑字符串的长度可能不等吧,要优先考虑长的字符串: 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
之后我们会开放练习的,到时候就会有测试用例了
点赞 回复 分享
发布于 2016-04-27 22:06

相关推荐

头像
11-03 16:48
已编辑
百度_高级研发工程师
事实是检验真理的唯一标准。&nbsp;无论我们怎么去说,去讲述,去证明,都抵不过一个offer来得实在,无论我们怎么去复现求职中的摸爬滚打、扒皮抽筋、狼狈不堪,都抵不过你在简历写上大厂的名字(外包不算)。&nbsp;所以在我求职期间,我什么话都不说,什么话都不讲,因为没有意义,虽然我总讲过程才是意义,但只有当你上岸的那一刻,你才有资格回想在水里的挣扎,只有等你出了山,你才知道山的全貌。&nbsp;我为什么一定要离开华为OD,难道它不稳定吗,不能赚钱吗。为了证明自己,那肯定有的。其实更多的是印证我的认知是否真的正确。&nbsp;(给不了解我的人交代一下背景,在下双非一本,gap一年,华为OD外包,摸爬滚打4个月,艰难上岸百度正编)一、...
先锋战士:说得很真诚。鄙视链自古有之,学历,家庭背景,财富,权利。从小有之,小学羡慕那些当班委的,中学羡慕那些学生会的,高中羡慕尖子班拿教学金的,大学羡慕高绩点,毕业了羡慕进大厂的。工作了,又羡慕高职级的,再后来又羡慕别人早早结婚的。我想表达的观点很简单,无论是华为od还是百度,都是经历,没有孰高孰低,为了抵达下一个风景,总会付出更多东西,但不就是人生吗?正如登山,每个阶段的山,都要想办法攀登,在博主的文字中,见到了坚持和积极寻找问题解决办法的心态
学历对求职的影响
点赞 评论 收藏
分享
我的offer呢😡:这不才9月吗,26到明年毕业前能一直找啊,能拿下提前批,转正的,offer打牌的都是有两把刷子的,为什么非要跟他们比。如果别人是9本硕+金牌+好几段大厂实习呢?如果别人是双非通天代呢?如果别人是速通哥呢?,做好自己就行了,我们做不到他们一样提前杀死比赛,但晚点到终点也没啥关系吧
双非应该如何逆袭?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务