大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
不必转换,我早已熟透组合排列算法:java如下
成都创新互联公司自2013年创立以来,是专业互联网技术服务公司,拥有项目成都网站设计、网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元衢江做网站,已为上家服务,为衢江各地企业和个人服务,联系电话:13518219792
import java.util.Arrays;
import java.util.LinkedList;
public class Guy
{
public static void recursionSub ( LinkedListint[] list, int count, int[] array, int ind, int start, int... indexs )
{
start++;
if (start count - 1)
{
return;
}
if (start == 0)
{
indexs = new int[array.length];
}
for ( indexs = ind; indexs array.length; indexs++ )
{
recursionSub (list, count, array, indexs + 1, start, indexs);
if (start == count - 1)
{
int[] temp = new int[count];
for ( int i = count - 1; i = 0; i-- )
{
temp[start - i] = array[indexs[start - i]];
}
list.add (temp);
}
}
}
public static void main ( String[] args )
{
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
LinkedListint[] list = new LinkedListint[] ();
recursionSub (list, 3, array, 0, -1);
for ( int[] strings : list )
{
System.out.println (Arrays.toString (strings));
}
}
}
javascript 和java都不是一个道理的,不是说转换就可以的,为什么很多人喜欢跨语言转换代码,你们为什么不能这样问呢:如何用java来实现某种功能,岂不是更好?
package p1;
import java.util.Arrays;
import java.util.LinkedList;
public class Guy
{
public static void recursionSub ( LinkedListint[] list, int count, int[] array, int ind, int start, int... indexs )
{
start++;
if (start count - 1)
{
return;
}
if (start == 0)
{
indexs = new int[array.length];
}
for ( indexs = ind; indexs array.length; indexs++ )
{
recursionSub (list, count, array, indexs + 1, start, indexs);
if (start == count - 1)
{
int[] temp = new int[count];
for ( int i = count - 1; i = 0; i-- )
{
temp[start - i] = array[indexs[start - i]];
}
list.add (temp);
}
}
}
public static void main ( String[] args )
{
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
LinkedListint[] list = new LinkedListint[] ();
recursionSub (list, 3, array, 0, -1);
for ( int[] strings : list )
{
System.out.println (Arrays.toString (strings));
}
}
}
理解他的原理就好写了。
所有参数 排除 时间戳,按照字母顺序排序,然后连接起来 和 appKey 以及 appSercet 进行md5 运算。
排序可以使用 String []keys = map.keyset().toarray() 获取后使用 Collections 进行sort。
有个类似的,可以参考一下:
public static boolean signVerify(String appSecret,MapString, String params){
MapString, String map=new HashMapString, String();
map.put("appSecret", appSecret);
for(String key:params.keySet()){
if(!key.equals("sign")){
map.put(key, params.get(key));
}
}
String sign=sign(map);
if(sign.equals(params.get("sign"))){
return true;
}
return false;
}
private static String toHexValue(byte[] messageDigest) {
if (messageDigest == null)
return "";
StringBuilder hexValue = new StringBuilder();
for (byte aMessageDigest : messageDigest) {
int val = 0xFF aMessageDigest;
if (val 16) {
hexValue.append("0");
}
hexValue.append(Integer.toHexString(val));
}
return hexValue.toString();
}
/**
*
* @param params
* @return
*/
public static String sign(MapString,String params){
ListString keys=new ArrayListString(params.keySet());
Collections.sort(keys);
String string="";
for(String s:keys){
string+=params.get(s);
}
String sign="";
try {
sign = toHexValue(encryptMD5(string.getBytes(Charset.forName("utf-8"))));
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("md5 error");
}
return sign;
}
private static byte[] encryptMD5(byte[] data)throws Exception{
MessageDigest md5 = MessageDigest.getInstance("MD5");
md5.update(data);
return md5.digest();
}
public static void main(String[] args) {
String appKey="key";
String appSecret="secret";
MapString, String params=new HashMapString, String();
params.put("appKey", appKey);
params.put("appSecret", appSecret);
params.put("date", new Date().getTime()+"");
String sign=sign(params);
params.put("sign", sign);
System.out.println(signVerify(appSecret, params));
}
做不到. java和js仅仅是名字和语法长得有点像, 但两者是完全独立的两种语言, 两者的功能和基础api都完全不同. 这意味着你想把js代码移植到java里不仅仅是要进行语法上的翻译, 还要把js里的各种基本函数都在java里实现一次, 例如你给的链接里的图形显示js是利用操作html元素和css实现的, 而在java里根本没有这种东西, 想实现相同的功能基本要完全重写
java也可以在网页上调用js, 但既然这里已经用js都实现了, 再用java包一遍并没有意义
package p1;
import java.util.Arrays;
import java.util.LinkedList;
public class Guy
{
public static void recursionSub ( LinkedListint[] list, int count, int[] array, int ind, int start, int... indexs )
{
start++;
if (start count - 1)
{
return;
}
if (start == 0)
{
indexs = new int[array.length];
}
for ( indexs = ind; indexs array.length; indexs++ )
{
recursionSub (list, count, array, indexs + 1, start, indexs);
if (start == count - 1)
{
int[] temp = new int[count];
for ( int i = count - 1; i = 0; i-- )
{
temp[start - i] = array[indexs[start - i]];
}
list.add (temp);
}
}
}
public static void main ( String[] args )
{
int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
LinkedListint[] list = new LinkedListint[] ();
recursionSub (list, 3, array, 0, -1);
for ( int[] strings : list )
{
System.out.println (Arrays.toString (strings));
}
}
}