Multiply Strings
Question
Given two numbers represented as strings, return multiplication of the numbers as a string.
Note:
- The numbers can be arbitrarily large and are non-negative.
- Converting the input string to integer is NOT allowed.
- You should NOT use internal library such as BigInteger.
Analysis
https://discuss.leetcode.com/topic/30508/easiest-java-solution-with-graph-explanation
Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
public String (String num1, String num2) { int m = num1.length(), n = num2.length(); int[] pos = new int[m + n]; for(int i = m - 1; i >= 0; i--) { for(int j = n - 1; j >= 0; j--) { int mul = (num1.charAt(i) - '0') * (num2.charAt(j) - '0'); int p1 = i + j, p2 = i + j + 1; int sum = mul + pos[p2]; pos[p1] += sum / 10; pos[p2] = (sum) % 10; } } StringBuilder sb = new StringBuilder(); for(int p : pos) if(!(sb.length() == 0 && p == 0)) sb.append(p); return sb.length() == 0 ? "0" : sb.toString(); }
|
Excel Sheet Column Title
Question
Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 2 3 4 5 6 7
|
1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB
|
Analysis
26进制转10进制
Code
Mine
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
public class Solution { public String convertToTitle(int n) { StringBuilder res=new StringBuilder(); int remain=0; while(n>26){ remain=n%26; if(remain==0){ res.insert(0,'Z'); n--; }else{ res.insert(0,(char)(remain+64)); } n/=26; } res.insert(0,(char)(n+64)); return res.toString(); } }
|
Better
1 2 3 4 5 6 7 8 9 10 11 12 13
|
public class Solution { public String convertToTitle(int n) { StringBuilder result = new StringBuilder(); while(n>0){ n--; result.insert(0, (char)('A' + n % 26)); n /= 26; } return result.toString(); } }
|
###
近期评论