题解 | #一种字符串和数字的对应关系#

一种字符串和数字的对应关系

http://www.nowcoder.com/practice/5020815008c649d7af1fef40c952c5eb

import java.util.Scanner;

public class Main {
    public static String getString(char[]chs,int n){
        if(chs==null||chs.length==0||n<1){
            return "";
        }
        int cur=1;
        int base= chs.length;
        int len=0;
        while (n>=cur){
            len++;
            n-=cur;
            cur*=base;
        }
        char[] res=new char[len];
        int index=0;
        int nCur=0;
        do{
            cur/=base;
            nCur=n/cur;
            res[index++]=getK(chs,nCur+1);
            n%=cur;
        }while (index!=res.length);
        return String.valueOf(res);
    }

    //得到字符串数组的第k-1个字符
    public static char getK(char[]chs,int k){
        if(k<1||k> chs.length){
            return 0;
        }
        return chs[k-1];
    }

    /*字符串数组得到数字
    * */
    public static int getNum(char[]chs,String str){
        if(chs==null||chs.length==0){
            return 0;
        }
        char[] strc=str.toCharArray();
        int base= chs.length;   //进制
        int cur=1;
        int res=0;
        for (int i = strc.length-1; i !=-1 ; i--) {
            res+=getNth(chs,strc[i])*cur;
            cur*=base;
        }
        return res;

    }
    //由字符得到对应数字
    public static int getNth(char[] chs,char ch){
        int res=-1;
        for (int i = 0; i < chs.length; i++) {
            if(chs[i]==ch){
                res=i+1;
                break;
            }
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String[] stt1=in.nextLine().split(" ");
        int opt = Integer.parseInt(stt1[0]);
        int len = Integer.parseInt(stt1[1]);
        String str=in.nextLine();
        char[] chs=str.toCharArray();
        if(opt==1){
            int n=in.nextInt();
            System.out.println(getString(chs,n));
        }else {
            String str_in=in.nextLine();
            System.out.println(getNum(chs,str_in));
        }


    }    
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
06-15 02:05
已编辑
南昌航空大学 数据分析师
Eason三木:你如果想干技术岗,那几个发公众号合唱比赛的经历就去掉,优秀团员去掉,求职没用。然后CET4这种不是奖项,是技能,放到下面的专业技能里或者单独列一个英语能力。 另外好好改改你的排版,首行缩进完全没有必要,行间距好好调调,别让字和标题背景黏在一起,你下面说能做高质量PPT你得展现出来啊,你这简历排版我用PPT做的都能比你做的好。 然后自我评价,你如果要干数据工程师,抗压能力强最起码得有吧。
简历中的项目经历要怎么写
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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