1. 程式人生 > >LeetCode 504. 七進位制數(C、C++、python)

LeetCode 504. 七進位制數(C、C++、python)

給定一個整數,將其轉化為7進位制,並以字串形式輸出。

示例 1:

輸入: 100
輸出: "202"

示例 2:

輸入: -7
輸出: "-10"

注意: 輸入範圍是 [-1e7, 1e7] 。

C

char* convertToBase7(int num) 
{
    int temp=abs(num);
    char* res=(char*)malloc(sizeof(char)*11);
    int i;
    int count=0;
    char t;
    while(temp)
    {
        i=temp%7;
        res[count]=i+'0';
        count++;
        temp/=7;
    }
    for(i=0;i<count/2;i++)
    {
        t=res[i];
        res[i]=res[count-i-1];
        res[count-i-1]=t;
    }
    if(num==0)
    {
        return "0";        
    }
    else if(num>0)
    {
        res[count]='\0';
        return res;
    }
    else
    {
        for(i=count-1;i>=0;i--)
        {
            res[i+1]=res[i];
        }
        res[0]='-';
        res[count+1]='\0';
        return res;
    }        
}

C++

class Solution {
public:
    string convertToBase7(int num) 
    {
        string res;
        int i;
        int temp=abs(num);
        while(temp)
        {
            i=temp%7;
            res.push_back(i+'0');
            temp/=7;
        }
        reverse(res.begin(),res.end());
        if(num>0)
        {
            return res;
        }
        else if(num==0)
        {
            return "0";
        }       
        else
        {
            string rr="-";
            rr.append(res);
            return rr;
        }
        
    }
};

python 法一

class Solution:
    def convertToBase7(self, num):
        """
        :type num: int
        :rtype: str
        """
        temp=abs(num)
        res=[]
        while temp:
            i=temp%7
            res.append(str(i))
            temp//=7
        res=list(reversed(res))
        res=''.join(res)
        if num==0:
            return '0'
        elif num>0:
            return res
        else:
            return '-'+res

python 法二

class Solution:
    def convertToBase7(self, num):
        """
        :type num: int
        :rtype: str
        """
        temp=abs(num)
        res=str()
        while temp:
            i=temp%7
            res+=str(i);
            temp//=7;
        res=res[::-1]
        if num==0:
            return '0'
        elif num>0:
            return res
        else:
            return '-'+res