CVTE笔试(2019秋招笔试题)--WEB后台开发笔试编程题,并归排序,获取不重复ID

编程题:

1.两个已经降序排好的数组,将两个数组合并,合并后依然保持降序。

这题基本和并归排序算法类似;

下面是我的解答:

public static int[] together(int[] A,int[] B) {
		/**
		 * 定义合并后的数组
		 */
	    int[] temp=new int[A.length+B.length];
		int i = 0;//左序列指针
        int j = 0;//右序列指针
        int t = 0;//临时数组指针
        while (i<A.length && j<B.length){
            if(A[i]>=B[j]){
                temp[t++] = A[i++];
            }else {
                temp[t++] = B[j++];
            }
        }
        while(i<A.length){//将左边剩余元素填充进temp中
            temp[t++] = A[i++];
        }
        while(j<B.length){//将右序列剩余元素填充进temp中
            temp[t++] = B[j++];
        }
        
        return temp;
		
}

2,使用0-9,a-z,A-Z,生成不重复的长度为4的ID(Sring),写一个方法获取ID(要求ID不能和已经有的ID重复),提供当前已生成ID总数的方法可以被调用。

这题我觉得说白了就是给你一个书生成四位数ID,一个数唯一确定一个ID,总共可以生成62*62*62*62个ID。

下面是我的解答:

	//获取ID
	public static String generator() {
		
		//获取已经生成的ID总数,调用的提供方法
		int count=getTotal();
		//假设生成的字符串是“ABCD”,i1:D的下标;i2:C的下标;i3:B的下标;i4:A的下标,s4:A;s3:B;s2:C;s1:D;
		int i1=0,i2=0,i3=0,i4=0;
		char s1='0',s2='0',s3='0',s4='0';
		i1=count%62;
		if(count>=62) {
			count=count/62;
			i2=count%62;
			if(count>=62) {
				count=count/62;
				i3=count%62;
				if(count>=62) {
					count=count/62;
					i4=count%62;
					if(count>=62) {
						return "没有空余ID生成";
					}
				}
			}
		}
		//把i1对应的值转换为字符串,即0-9,转化为字符0-9;10-35转化为字符a-z;36-61转化为字符A-Z;
		if (i1>=10) {
			if (i1>=36) {
				
				s1=(char) (s1+i1+'A'-'0'-36);
				
			}else {
				s1=(char) (s1+i1+'a'-'0'-10);
			}
		}else {
			s1=(char) (s1+i1);
		}
		//下面都是同理
		if (i2>=10) {
			if (i2>=36) {
				
				s2=(char) (s2+i2+'A'-'0'-36);
				
			}else {
				s2=(char) (s2+i2+'a'-'0'-10);
			}
		}else {
			s2=(char) (s2+i2);
		}
		if (i3>=10) {
			if (i3>=36) {
				
				s3=(char) (s3+i3+'A'-'0'-36);
				
			}else {
				s3=(char) (s3+i3+'a'-'0'-10);
			}
		}else {
			s3=(char) (s3+i3);
		}
		if (i4>=10) {
			if (i4>=36) {
				
				s4=(char) (s4+i4+'A'-'0'-36);
				
			}else {
				s4=(char) (s4+i4+'a'-'0'-10);
			}
		}else {
			s4=(char) (s4+i4);
		}
		return ""+s4+s3+s2+s1;
	}
	
	//获取生成的ID总数,具体步骤省略了
	public static int getTotal() {
		return 62*62*62*61+62*62*61+62*10+6;
	}

	public static void main(String[] args) {
		
		System.out.println(generator());//输出ZZa6

	}

解答方法有很多,笔试的时候想到了这样的方法就直接写了。

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值