博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ARTS打卡计划第6周-ALGORITHM
阅读量:5955 次
发布时间:2019-06-19

本文共 3001 字,大约阅读时间需要 10 分钟。

这题其实是很常见的一个开发场景,短地址的开发。我这里只是分享一种md5的方式,还有其他的生成字符串比较短的hash方式。

import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;import java.util.HashMap;public class Codec {	private HashMap
map = new HashMap<>(); // Encodes a URL to a shortened URL. public String encode(String longUrl) { String md5 = crypt(longUrl); String url = "http://tinyurl.com/" + md5; map.put(url, longUrl); return url; } // Decodes a shortened URL to its original URL. public String decode(String shortUrl) { return map.get(shortUrl); } public String crypt(String str) { if (str == null || str.length() == 0) { throw new IllegalArgumentException("String to encript cannot be null or zero length"); } StringBuffer hexString = new StringBuffer(); try { MessageDigest md = MessageDigest.getInstance("MD5"); md.update(str.getBytes()); byte[] hash = md.digest(); for (int i = 0; i < hash.length; i++) { if ((0xff & hash[i]) < 0x10) { hexString.append("0" + Integer.toHexString((0xFF & hash[i]))); } else { hexString.append(Integer.toHexString(0xFF & hash[i])); } } } catch (NoSuchAlgorithmException e) { e.printStackTrace(); } return hexString.toString(); } public static void main(String[] args) { String url = "https://leetcode.com/problems/design-tinyurl"; Codec codec = new Codec(); System.out.println(codec.decode(codec.encode(url))); }}

  

import java.util.LinkedList;import java.util.List;class Solution {    public List
selfDividingNumbers(int left, int right) { List
ret = new LinkedList<>(); for(int i=left;i<=right;i++) { if(isSelfDividing(i)) { ret.add(i); } } return ret; } public boolean isSelfDividing(int n) { char[] chars = (n+"").toCharArray(); for(char c :chars) { int cInt = c-'0'; if(cInt ==0 ) { return false; } if(n%cInt!=0) { return false; } } return true; }}

  

public class Solution507 {	   public boolean checkPerfectNumber(int num) {		  		   int sum = 1;		   for(int i=2;i<=Math.sqrt(num);i++) {			   int num1,num2=0;			   if(num%i==0) {				   num1=i;				   num2=num/num1;				   if(num1!=num2) {					   sum+=num1+num2;				   }else {					   sum = num1;				   }			   }			   		   }		   if (num ==sum && num!=1) {			   return true;		   }else {			   return false;		   }	        	    }		   	public static void main(String[] args) {		// TODO Auto-generated method stub		Solution507 s = new Solution507();		System.err.println(s.checkPerfectNumber(1));		System.err.println(s.checkPerfectNumber(2));		System.err.println(s.checkPerfectNumber(4));		System.err.println(s.checkPerfectNumber(28));	}}

  

class Solution { 	  public boolean judgeSquareSum(int c) {		 for(int i=0;i<=Math.sqrt(c);i++) {			 int lastNums = c -i*i;			 int last = (int) Math.sqrt(lastNums) ;			 if(last*last == lastNums) {				 return true;			 }					 }		 return false;	        	    }}

  

转载于:https://www.cnblogs.com/dongqiSilent/p/10909312.html

你可能感兴趣的文章
Ionic2 下处理 Android 设备下返回按钮的事件
查看>>
linux安全问答(1)
查看>>
zabbix监控进程的CPU和内存占用量
查看>>
【自用】手工编译lnmp环境
查看>>
普通用户通过Putty密钥方式登录
查看>>
网页显示3D模型
查看>>
第六章:thymeleaf页面模版-1. 信息输出
查看>>
Ubuntu 16.04 install Docker 1.12.0
查看>>
2012《Linux杂志》读者选择奖 (Readers' Choice Awards 2012- Linux Journal)
查看>>
21天让你成为Horizon View高手—Day11:手动池的创建
查看>>
Python迭代对象、迭代器、生成器
查看>>
请求转发与重定向的区别
查看>>
大数据分析 | 百年奥运往事知多少
查看>>
矩形覆盖-----批了外皮的亲蛙跳
查看>>
@RequestParam今天才知道是咋用的..
查看>>
全国第一家FPGA云主机(FAAS)正式启动售卖,被阿里云抢先了。
查看>>
Linux 局域网路由新手指南:第 2 部分
查看>>
TensorSpace:超酷炫3D神经网络可视化框架
查看>>
横向ListView (二)—— 添加快速滚动功能及item相关事件实现
查看>>
java 开发银行支付、对账时证书相关的操作总结
查看>>