题意大概是,有两个有序(倒序)整型数组A和B,将数组A和B合并,并要求合并后的数组依然是倒序
如数组
A={98,96,90,88,78};
B={97,95,94,82,80};
合并后是 [98, 97, 96, 95, 94, 90, 88, 82, 80, 78]
/**
* @Title: merge
* @Description: 将有序数组A和B合并,合并后仍是有序的
* @param A 有序数组A
* @param B 有序数组B
* @return 合并后的数组
* @return int[] 返回类型
* @throws
*/
public static int[] merge(int[] A,int[] B){
//计算合并后的数组长度,
int lengthA=A.length,lengthB=B.length;
int length=lengthA+lengthB;
//存放合并后的数组
int[] C=new int[length];
//数组A、B、C的下标
int i=0,j=0,k=0;
//比较数组A和B,将元素大的放进数组C,同时元素大的数组下标加一
while (iif (A[i]>B[j]) {
C[k++]=A[i++];
}else {
C[k++]=B[j++];
}
}
//将数组剩余元素放进数组C
if(i>=lengthA){
while (jelse {
while (ireturn C;
}
测试代码
@Test
public void test() {
int[] A={98,96,90,88,78};
int[] B={97,95,94,82,80};
int[] C=merge(A, B);
System.out.println(Arrays.toString(C));
}
输出
[98, 97, 96, 95, 94, 90, 88, 82, 80, 78]
题意大概是,设计一个字符串生成器,要求生成的字符串唯一。
字符串的每个字符可以是0~9、A~Z、a~z
已实现public static long getTotal()方法,要求实现字符生成器public static String generate()
public class Test2{
//计数器
private static long total=0;
//为了方便测试,增加此方法,可以任意设置生成次数
private static void setTotal(long total) {
Test2.total = total;
}
//字符生成器
public static String generate(){
long size=getTotal();
if(size>=Math.pow(62, 4)){
return "号码已满";
}
//生成字符表
char[] g=new char[62];
int k=0;
for(int i=0;i<10;i++){
g[k++]=(char) (48+i);
}
for(int i=0;i<26;i++){
g[k++]=(char) (65+i);
}
for(int i=0;i<26;i++){
g[k++]=(char) (97+i);
}
//通过已生成次数计算映射关系
int a0=0,a1=0,a2=0,a3=0;
a2=(int) (size/62);
a1=a2/62;
a0=a1/62;
a3=(int) (size%62);
a2=a2%62;
a1=a1%62;
char[] c=new char[4];
c[0]= g[a0];
c[1]=g[a1];
c[2]=g[a2];
c[3]=g[a3];
//维护计数器
total+=1;
return new String(c);
}
//获取生成的次数
public static long getTotal(){
return total;
}
}
测试代码
@Test
public void test() {
String[] strings=new String[63];
for (int i = 0; i < 63; i++) {
strings[i]=generate();
}
System.out.println(Arrays.toString(strings));
}
运行结果
[0000, 0001, 0002, 0003, 0004, 0005, 0006, 0007, 0008, 0009, 000A, 000B, 000C, 000D, 000E, 000F, 000G, 000H, 000I, 000J, 000K, 000L, 000M, 000N, 000O, 000P, 000Q, 000R, 000S, 000T, 000U, 000V, 000W, 000X, 000Y, 000Z, 000a, 000b, 000c, 000d, 000e, 000f, 000g, 000h, 000i, 000j, 000k, 000l, 000m, 000n, 000o, 000p, 000q, 000r, 000s, 000t, 000u, 000v, 000w, 000x, 000y, 000z, 0010]
测试代码
@Test
public void test2() {
setTotal(62*62*62*61+1);
System.out.println(generate());
}
运行结果
z001