• ARTS打卡计划第6周-ALGORITHM


    535. TinyURL 的加密与解密

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

    import java.security.MessageDigest;
    import java.security.NoSuchAlgorithmException;
    import java.util.HashMap;
    
    public class Codec {
    	private HashMap<String, String> 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)));
    	}
    }
    

      

    728. 自除数

    import java.util.LinkedList;
    import java.util.List;
    class Solution {
        public List<Integer> selfDividingNumbers(int left, int right) {
    		  List<Integer> 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;
    		  
    	  }
    }
    

      

    507. 完美数

    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));
    	}
    
    }
    

      

    633. 平方数之和

    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;
    	        
    	    }
    }
    

      

  • 相关阅读:
    UML用例图总结
    项目管理心得:一个项目经理的个人体会、经验总结
    UML类图符号简介
    C++中栈和堆上建立对象的区别
    Win32 API
    Python
    remove extra kernel
    Create short cut
    Set Form Position
    Get folder
  • 原文地址:https://www.cnblogs.com/dongqiSilent/p/10909312.html
Copyright © 2020-2023  润新知