邀请码检测,需要用编程回答

某产品的用户注册邀请码为一串有小写字母和数字组成的字符串,字符串长度为16,当用户数据邀请码的时候,系统需要对邀请码做有效性验证,假设验证规则如下:

1、从序列号最后一位字符开始,逆向将奇数位(1、3、5等等)相加

2、从序列号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和

3、将奇数位总和加上偶数位总和,结果可以被10整除

4、小写字母对应数值,可由下面键值对确定;

[(a,1),(b,2),(c,3)…,(i,9),(j,1),(k,2)…],亦即,按字母顺序,1-9循环。

输入:输入16位字符串,表示邀请码

输出:输出"ok" 或者"error"

这样的设计 除了为难自己 没有任何实际意义

 这里的关键不是校验规则,而是邀请码的唯一性,不同用户的邀请码应该是永不重复的。

/**
     * @Title: verificationCode   
     * @Description:  假设场景为A邀请B注册:
					  实现方案应该是这样的:
					  B填写A给定的字符串,
                       判断是否一致,通过允许注册,
                        否则不允许注册。规则无所谓,
                        不用把简单问题复杂化      
     * @author: 徐蜀黍
     * @date: 2021年2月19日 下午6:24:53    
     * @param code B填写的邀请码
     * @return
     */
    public String verificationCode(String code) {
    	//这里用UUID模拟用户A邀请码
    	String a_code = UUID.randomUUID().toString().replaceAll("-", "");
		return code.equals(a_code)?"ok":"error";
    }