Given a positive integer, return its corresponding column title as appear in an Excel sheet.
For example:
1 -> A 2 -> B 3 -> C ... 26 -> Z 27 -> AA 28 -> AB-----------------------------------
similar to convert a base 10 number to any base number
可以考虑1-26 为 0 - 25,进行转换
class Solution { public: string convertToTitle(int n) { string s = ""; while (n > 0) { char c; if (n % 26 == 0) { c = 'Z'; n--; }else c = n % 26 - 1 + 'A'; n = n / 26; s = c + s; } return s; } };
Excel Sheet Column Number
Related to question Excel Sheet Column Title
Given a column title as appear in an Excel sheet, return its corresponding column number.
For example:
A -> 1 B -> 2 C -> 3 ... Z -> 26 AA -> 27 AB -> 28----------------------------------------------------
class Solution { public: int titleToNumber(string s) { int rt = 0; for (int i = 0; i < s.length(); i++) { int temp = s[i] - 'A' + 1; rt = rt * 26 + temp; } return rt; } };
Missing Ranges
Given a sorted integer array where the range of elements are [lower, upper] inclusive, return its missing ranges.For example, given
[0, 1, 3, 50, 75]
, lower = 0 and upper = 99, return ["2", "4->49", "51->74", "76->99"].
----------------------------------------------------------------------
class Solution { public: vector<string> findMissingRanges(int A[], int n, int lower, int upper) { vector<string> rt; string mid = "->"; string s = ""; if (n == 0) { if (lower == upper) { rt.push_back(to_string(lower)); }else { rt.push_back(to_string(lower) + mid + to_string(upper)); } return rt; } if (A[0] > lower) { int temp = A[0] - 1; if (A[0] - 1 == lower) { s = to_string(lower); }else s = to_string(lower) + mid + to_string(A[0] - 1); rt.push_back(s); } for (int i = 1; i < n; i++) { if (A[i] == A[i - 1] + 1) continue; string low = to_string(A[i - 1] + 1); string up = to_string(A[i] - 1); if (low == up) s = low; else s = low + mid + up; rt.push_back(s); } if (A[n - 1] < upper) { if (A[n - 1] + 1 == upper) s = to_string(upper); else s = to_string(A[n - 1] + 1) + mid + to_string(upper); rt.push_back(s); } return rt; } };
更新
class Solution { public: vector<string> findMissingRanges(vector<int>& nums, int lower, int upper) { nums.insert(nums.begin(),lower - 1); nums.push_back(upper + 1); vector<string> rt; int start = 0; for (int i = 1; i < nums.size(); i++) { if (nums[i] == nums[i - 1] + 1 || nums[i] == nums[i - 1]) { continue; }else if (nums[i] - 2 == nums[i - 1]) { rt.push_back(to_string(nums[i] - 1)); }else { rt.push_back(to_string(nums[i - 1] + 1) + "->" + to_string(nums[i] - 1)); } } return rt; } };
No comments:
Post a Comment