火山极速版邀请码是多少?实现思路是什么?

在程序开发中,经常会遇到生成火山极速版邀请码(207435861)的需求,最近在火山极速版的过程中,也遇到了邀请码(247755861)生成的问题,Google了一把,没有发现好的生成方案,没办法,只能自己造轮子了,在这里把实现方案记录下来,方便大家,当然如果你有更好的实现方案也可以告诉我。

实现了通过用户id直接生成9位不重复字符邀请码(207435861),通过邀请码直接计算用户id
需求如下:

邀请码由9位不重复数字字母组成
用户id和邀请码可以相互转化
实现思路大概是
//验证码字符列表
private static final char STUFFS[] = {
‘A‘,‘B‘,‘C‘,‘D‘,‘E‘,‘F‘,‘G‘,‘H‘,
‘I‘,‘J‘,‘K‘,‘L‘,‘M‘,‘N‘,‘P‘,‘Q‘,
‘R‘,‘S‘,‘T‘,‘U‘,‘V‘,‘W‘,‘X‘,‘Y‘,
‘1‘,‘2‘,‘3‘,‘4‘,‘5‘,‘6‘,‘7‘,‘8‘};
32个字母数字中取6个字符进行排列组合,共可生成3231302928*27=652458240个邀请码,我们只需要实现652458240个数字和其一一对应即可,下面是编码的过程,解码过程逆向就可以了。

1、将数字拆分成组合序号和排列序号

1:ABCDEF 2:ABCDEG 3:ABCDEH 以此类推

//PERMUTATION = 6!
//MAX_COMBINATION = 32!/(32-6)!/6!
public static String encode(int val) {
int com = val / PERMUTATION;
if(com >= MAX_COMBINATION) {
throw new RuntimeException("id can‘t be greater than 652458239");
}
int per = val % PERMUTATION;
char[] chars = combination(com);
chars = permutation(chars,per);
return new String(chars);
}

2、通过组合序号获取字符组合
private static char[] combination(int com){
char[] chars = new char[LEN];
int start = 0;
int index = 0;
while (index < LEN) {
for(int s = start; s < STUFFS.length; ++s ) {
int c = combination(STUFFS.length - s - 1, LEN - index - 1);
if(com >= c) {
com -= c;
continue;
}
chars[index++] = STUFFS[s];
start = s + 1;
break;
}
}
return chars;
}
3、通过排列序号对字符进行排序
private static char[] permutation(char[] chars,int per){
char[] tmpchars = new char[chars.length];
System.arraycopy(chars, 0, tmpchars, 0, chars.length);
int[] offset = new int[chars.length];
int step = chars.length;
for(int i = chars.length -1;i >= 0;--i) {
offset[i] = per % step;
per /= step;
step --;
}
for(int i = 0; i < chars.length;++i) {
if(offset[i] == 0)
continue;
char tmp = tmpchars[i];
tmpchars[i] = tmpchars[i - offset[i]];
tmpchars[i - offset[i]] = tmp;
}
return tmpchars;
}
3、测试用例
Random random = new Random();
for(int i = 0; i < 100000;++i) {
int id = random.nextInt(652458240);
String code = encode(id);
int nid = decode(code);
System.out.println( id + " -> " + code + " -> " + nid);
}
结果如下:

521926735 -> 1SVR5G -> 521926735
281504940 -> CRKISU -> 281504940
174311333 -> WSQMFB -> 174311333
198381828 -> V3IBN6 -> 198381828
450572266 -> T1VHFJ -> 450572266
229325485 -> LJGC4D -> 229325485
132906750 -> CIVBW4 -> 132906750
388658714 -> FPX2EM -> 388658714
184756314 -> 2BGPT8 -> 184756314
?著作权归作者所有:来自51CTO博客作者wx5ce780391e043的原创作品,如需转载,请注明出处,否则将追究法律责任
火山
极速版
邀请码

0

分享

收藏
上一篇:今日头条极速版邀请码是什么?实现...

原文地址:https://blog.51cto.com/14457249/2424079

时间: 2024-10-09 23:10:11

火山极速版邀请码是多少?实现思路是什么?的相关文章

今日头条极速版邀请码以及其它APP邀请码大全

现在大多手机新闻APP都需要输入码,在网上找了很久,最终找到一个比较全的文章,本人试过,都是可以使用的! 第6个比较好,可边看新闻,边收益!嘻嘻!平时写代码累了,休息刷一下!或者在睡觉前刷新一下,每天积累,够买早餐! 1.天天快报(邀请码) QAXTRN 2.趣头条(邀请码) A186964988 3.淘新闻(邀请码) 70171730 4.酷划锁屏(邀请码) 895798263 5.红包头条(邀请码) A15815061 6.今日头条极速版(邀请码) CYUUWLV8 7.YY极速版(邀请码)

今日头条极速版邀请码以及其它APP邀请码大全(转发)

现在大多手机新闻APP都需要输入码,在网上找了很久,最终找到一个比较全的文章,本人试过,都是可以使用的! 第1个比较好,可边看新闻,边收益!嘻嘻!平时写代码累了,休息刷一下!或者在睡觉前刷新一下,每天积累,够买早餐! 1.今日头条极速版(邀请码)DHQPJ63A 2.天天快报(邀请码)DVRR5V 3.东方头条(邀请码)025971713 4.趣头条(邀请码)A186368472 5.惠头条(邀请码)10712906 6.淘新闻(邀请码)73369541 原文地址:https://www.cnb

百度地图 JavaScript API极速版 开发体会

前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好. 把开发者细分成普通web开发者和移动web开发者.正好用到了手机地图这块决定尝试一下.先看一下百度地图官方对它的定义.     本套百度地图API是专为手机浏览器提供的API,您可使用该套API,在手机页面中展示地图.标注位置.检索poi.查询线路等. 特点: 较同时兼容PC和手机浏览器的JavaScript API大众版而言,该版更适配移动设备,体积更小,加载地图速度更快,更省流

百度地图 JavaScript API 极速版 开发体会

前段时间百度地图API推出了 JavaScript API 极速版 1.0 简单看了一下,从产品定位来说真是挺好. 把开发人员细分成普通web开发人员和移动web开发人员.正好用到了手机地图这块决定尝试一下.先看一下百度地图官方对它的定义. 尊重劳动成功请保留原文地址:http://blog.csdn.net/lbsnews/article/details/29368879     本套百度地图API是专为手机浏览器提供的API,您可使用该套API,在手机页面中展示地图.标注位置.检索poi.查

360浏览器2014官方极速版 7.5.3.302简介

360浏览器2014官方极速版是一款极速.安全的无缝双核浏览器.它基于Chromium开源项目,具有闪电般的浏览速度.完备的安全特性及海量丰富的实用工具扩展.此外,为了更适合国内用户使用,它加入了鼠标手势.超级拖拽.恢复关闭的标签.地址栏下拉列表等实用功能,配合原有Chromium的顺滑操作体验,让您浏览网页时顺畅.安心. 360极速浏览器7.5.3.186更新日志: 修复: 解决谷歌商店扩展无法安装的问题 修复一些Bug 360浏览器2014官方极速版更新日志: 1新增: 下载视频文件时,增加

迅雷极速版 2020年 防止升级方法

权限大法你肯定折腾过,貌似有时候不起作用~ 进入迅雷安装目录中的Data目录 找到ThunderPush文件夹并删除, 如果没找到这个文件夹,就直接新建一个ThunderPush文件夹. 右键ThunderPush文件夹→属性→ 勾选“只读”,安全→编辑→完全控制勾选“拒绝”,并应用. 可以双击文件夹如果有访问权限提示,说明设置成成功. 都2020年了,我们来点新花样~ 迅雷极速版启动后会自动在 ThunderPush 目录下整一堆包! 其中有一个XML文件 ThunderPush.7.10.3

Spring各版本源码下载

spring framework 各版本源码下载地址 现在spring的源码下载地址真是不好找,这次终于找到了.记录一下,以帮助需要的朋友. https://github.com/spring-projects/spring-framework/tags可以选择需要的版本进行下载. 感谢网友 xiyuan1999 在csdn上提供的此下载地址.

炼数成金dataguru邀请码C451

Dataguru是2011年11月创建的关于数据仓库.数据挖掘.商业智能等技术和业务讨论的数据分析专业社区网站.上面有很多关于数据分析的课程还是很不错的,虽然要交一部分钱,但是大家在一起学习.讨论也就有了更多的学习乐趣,而且还能够认识不少志同道合的朋友. 而且,Dataguru创造了一个逆向收费的机制,主要通过学习之后会根据学习的情况返还学费.如果使用下面的链接进入,并且使用C451这个邀请码还可以直接见面50%的学费. http://www.dataguru.cn/invite.php?inv

酷划邀请码

酷划邀请码:83733761.酷划是一款手机解锁赚钱的软件,可以说是一款手机赚钱软件,解锁左滑右滑都能赚钱,邀请别人玩酷划,填你的邀请码注册酷划,你们2个都能获得2元现金,到时候可以和赚的钱统一提现.不填邀请码就只有5毛奖励哦,如果可以的话填我的邀请码吧,谢谢大家了.酷划官网下载地址:http://t.cn/RhgrO8C