风扫地 发表于 2019-6-29 09:49:17

504_七进制数

/*
给定一个整数,将其转化为7进制,并以字符串形式输出。
示例 1:
输入: 100
输出: "202"
示例 2:
输入: -7
输出: "-10"
注意: 输入范围是 [-1e7, 1e7] 。
*/

风扫地 发表于 2019-6-29 09:50:21

常规方法:

/* reserse str,close area*/
void str_reverse(char* str , int start , int end)
{
    char c = 0;
   
    while(start<end)
    {
      c         = str;
      str= str;
      str    = c;
      start++;
      end--;
    }
}


char* convertToBase7(int num)
{
    char* ret_val = (char*)malloc(20);/* 20个字节足够了吧*/
    int   ind   = 0;
    int   temp    = num;
   
   
    do
    {
      if(ret_val)
      {
            memset(ret_val,0,20);   /**/
      }
      else
      {
            break;
      }
      
      if(num<0)
      {
            ret_val = '-'      ;
            temp         = -temp    ;
            ind++                   ;
      }
      
      do
      {
            ret_val = temp % 7 + 0x30;
            ind++;
            temp /= 7;
      }while(temp!=0);
      
      if(num < 0)
      {
            str_reverse(ret_val,1,ind-1);
      }
      else
      {
            str_reverse(ret_val,0,ind-1);
      }
      break;
    }while(0);
      
    return ret_val;
}


/*
执行用时 :0 ms, 在所有 C 提交中击败了100.00%的用户
内存消耗 :6.8 MB, 在所有 C 提交中击败了59.38%的用户
*/
页: [1]
查看完整版本: 504_七进制数