Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[LeetCode] 504. Base 7 #504

Open
grandyang opened this issue May 30, 2019 · 0 comments
Open

[LeetCode] 504. Base 7 #504

grandyang opened this issue May 30, 2019 · 0 comments

Comments

@grandyang
Copy link
Owner

grandyang commented May 30, 2019

 

Given an integer, return its base 7 string representation.

Example 1:

Input: 100
Output: "202"

 

Example 2:

Input: -7
Output: "-10"

 

Note: The input will be in range of [-1e7, 1e7].

 

这道题给了我们一个数,让我们转为七进制的数,而且这个可正可负。那么我们想如果给一个十进制的100,怎么转为七进制。我会先用100除以49,商2余2。在除以7,商0余2,于是就得到七进制的202。其实我们还可以反过来算,先用100除以7,商14余2,然后用14除以7,商2余0,再用2除以7,商0余2,这样也可以得到202。这种方法更适合于代码实现,要注意的是,我们要处理好负数的情况,参见代码如下:

 

解法一:

class Solution {
public:
    string convertToBase7(int num) {
        if (num == 0) return "0";
        string res = "";
        bool positive = num > 0;
        while (num != 0) {
            res = to_string(abs(num % 7)) + res;
            num /= 7;
        }
        return positive ? res : "-" + res;
    }
};

 

上面的思路也可以写成迭代方式,非常的简洁,仅要三行就搞定了,参见代码如下:

 

解法二:

class Solution {
public:
    string convertToBase7(int num) {
        if (num < 0) return "-" + convertToBase7(-num);
        if (num < 7) return to_string(num);
        return convertToBase7(num / 7) + to_string(num % 7);
    }
};

 

参考资料:

https://discuss.leetcode.com/topic/78934/1-line

https://discuss.leetcode.com/topic/78972/simple-java-oneliner-ruby

https://discuss.leetcode.com/topic/78935/java-1-liner-standard-solution

 

LeetCode All in One 题目讲解汇总(持续更新中...)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant