zoukankan      html  css  js  c++  java
  • Math Two

    (1)Excel Sheet Column Number

    解题思路:将26进制的数转化为10进制

    代码如下:

    1 public class Solution {
    2     public int titleToNumber(String s) {
    3         return s.length() == 0 ? 0 : (s.charAt(s.length() - 1)-'A' + 1) + 26 * titleToNumber(s.substring(0 , s.length() - 1));
    4     }
    5 }
    View Code

    (2)Roman to Integer

    解题思路:

    使用HashMap存入7个罗马字母和相对应的整数,然后从最低位(最右)开始依次跟相邻高位作比较,低位数字小的话就相加,低位数字大的话就相减。

    代码如下;

     1 public class Solution {
     2     public int romanToInt(String s) {
     3         if (s == null || s.length()==0) {
     4                 return 0;
     5         }
     6         Map<Character, Integer> m = new HashMap<Character, Integer>();
     7         m.put('I', 1);
     8         m.put('V', 5);
     9         m.put('X', 10);
    10         m.put('L', 50);
    11         m.put('C', 100);
    12         m.put('D', 500);
    13         m.put('M', 1000);
    14 
    15         int length = s.length();
    16         int result = m.get(s.charAt(length - 1));
    17         for (int i = length - 2; i >= 0; i--) {
    18             if (m.get(s.charAt(i + 1)) <= m.get(s.charAt(i))) {//小的数字在大的数字右边
    19                 result += m.get(s.charAt(i));
    20             } else {
    21                 result -= m.get(s.charAt(i));//小的数字在大的数字左边
    22             }
    23         }
    24         return result;
    25     }
    26 }
    View Code

    (3) Add Strings

    代码如下:

     1 public class Solution {
     2     public String addStrings(String num1, String num2) {
     3         StringBuilder sb = new StringBuilder();
     4         int carry = 0;//进位
     5         for(int i = num1.length() - 1, j = num2.length() - 1; i >= 0 || j >= 0 || carry == 1; i--, j--){
     6             int x = i < 0 ? 0 : num1.charAt(i) - '0';
     7             int y = j < 0 ? 0 : num2.charAt(j) - '0';
     8             sb.append((x + y + carry) % 10);
     9             carry = (x + y + carry) / 10;
    10         }
    11         return sb.reverse().toString();
    12     }
    13 }
    View Code

    解题思路:

    使用Java中的StringBuilder类新建一个对象sb,用carry表示进位值。两个字符串同时从最低位(最右)字符开始相加,sb中添加x+y+carry%10的余数,carry更新为新的进位值,直至所有数字都相加而且进位为0时将字符串sb反转返回即可。

    (4)Power of Three

    解题思路:

    假设一个数Num是3的幂,那么所有Num的约数都是3的幂,如果一个数n小于Num且是3的幂,那么这个数n一定是Num的约数。

    了解上述性质,我们只需要找到一个最大的3的幂,看看参数n是不是此最大的幂的约数就可以。

    代码如下:

    1 public class Solution {
    2     public boolean isPowerOfThree(int n) {
    3        // 1162261467 is 3^19,  3^20 is bigger than int  
    4        return (n > 0 &&  1162261467 % n == 0);
    5     }
    6 }
    View Code

    (5)Power of Two

    解题思路:

    代码如下:

    1 public class Solution {
    2     public boolean isPowerOfTwo(int n) {
    3         return ((n & (n-1))==0 && n>0);
    4     }
    5 }
    View Code

    (6)Ugly Number

    解题思路:

    num被2,3,5整除之后判断商是否等于1,不等于1说明有别的除数,不是uglynumber。

    代码一如下:

     1 public class Solution {
     2     public boolean isUgly(int num) {
     3        //不会用到4 ,因为4是2的2倍。
     4         for (int i = 2; i < 6 && num > 0; i++) {
     5             while (num % i == 0) {
     6                 num /= i;
     7             }
     8         }
     9         return num == 1;
    10     }
    11 }
    View Code

    代码二如下:

     1 public class Solution {
     2     /**
     3      * @param num an integer
     4      * @return true if num is an ugly number or false
     5      */
     6     public boolean isUgly(int num) {
     7         if (num <= 0) return false;  
     8         if (num == 1) return true;  
     9           
    10         while (num >= 2 && num % 2 == 0) num /= 2;  
    11         while (num >= 3 && num % 3 == 0) num /= 3;  
    12         while (num >= 5 && num % 5 == 0) num /= 5;  
    13           
    14         return num == 1;
    15     }
    16 }
    View Code
  • 相关阅读:
    Mysql锁原理浅谈
    MySQL分库分表浅谈
    MySQL ORDER BY主键id加LIMIT限制走错索引
    表数据量影响MySQL索引选择
    配置supervisor管理beego应用
    9.Element-ui的校验规则Rules
    8.Element-ui日期组件上传到后台日期少一天解决办法
    23.POI导出
    22.访问jar包下资源路径里的文件
    21.Shiro在springboot与vue前后端分离项目里的session管理
  • 原文地址:https://www.cnblogs.com/struggleli/p/6201791.html
Copyright © 2011-2022 走看看