剑指Offer : 整数中1出现的次数 (Java ,PHP ,C++ ,Python) 性能对比

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lthirdonel/article/details/88737791

同样的逻辑代码,改成4种语言,运行结果及代码如下:

运行结果表

语言 时间 内存
C++ 4ms 480KB
PHP 7 9ms 3932KB
Java 1.8 14ms 9364KB
Python2.7 24ms 5752KB

运行结果截图:

  • C++

在这里插入图片描述

  • PHP7

在这里插入图片描述

  • Java

在这里插入图片描述

  • Python
    在这里插入图片描述

代码:

  • C++
class Solution {
public:
    int NumberOf1Between1AndN_Solution(int n)
    {
        int result = 0;
        int temp=n;
        int bit=1;
         if(temp==0){
            return 0;
        }
        if(temp<10){
            return 1;
        }
        while(temp>=1)
        {
            if(temp%10<1){
                result += (int)(temp/10) * bit;
            }
            else if(temp%10>1){
                result += ((int)(temp/10)+1) * bit;
            }else{
                result += (int)(temp/10) * bit+ n%bit+1;
            }
            temp/=10;
            bit*=10;
        }
        return result;
    }
};
  • PHP7
<?php

function NumberOf1Between1AndN_Solution($n)
{
    $result = 0;
    $temp=$n;
    $bit=1;
     if($temp==0){
        return 0;
    }
    if($temp<10){
        return 1;
    }
    while($temp>=1)
    {
        if($temp%10<1){
            $result += intval($temp/10) * $bit;
        }
        else if($temp%10>1){
            $result += (intval($temp/10)+1) * $bit;
        }else{
            $result += intval($temp/10) * $bit+ $n%$bit+1;
        }
        $temp/=10;
        $bit*=10;
    }
    return $result;

}
  • Java
public class Solution {
    public int NumberOf1Between1AndN_Solution(int n) {
        int result = 0;
        int temp=n;
        int bit=1;
         if(temp==0){
            return 0;
        }
        if(temp<10){
            return 1;
        }
        while(temp>=1)
        {
            if(temp%10<1){
                result += (int)(temp/10) * bit;
            }
            else if(temp%10>1){
                result += ((int)(temp/10)+1) * bit;
            }else{
                result += (int)(temp/10) * bit+ n%bit+1;
            }
            temp/=10;
            bit*=10;
        }
        return result;
    }
}
  • Python
# -*- coding:utf-8 -*-
class Solution:
    def NumberOf1Between1AndN_Solution(self, n):
            result = 0
            temp=n
            bit=1
            if temp==0:
                return 0
            if temp<10:
                return 1
            
            while temp>=1:
            
                if temp%10<1:
                    result += int(temp/10) * bit
                
                elif temp%10>1:
                    result += (int(temp/10)+1) * bit
                else:
                    result += int(temp/10) * bit + n%bit+1
                
                temp/=10
                bit*=10
            
            return result

测试网址:
https://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6?tpId=13&tqId=11184&tPage=2&rp=2&ru=%2Fta%2Fcoding-interviews&qru=%2Fta%2Fcoding-interviews%2Fquestion-ranking

猜你喜欢

转载自blog.csdn.net/lthirdonel/article/details/88737791
今日推荐