欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

**挑战全网**判断10到N最快的回文数个数计算方法

程序员文章站 2024-03-14 20:54:35
...

10<num<=10 0000 0000
如:
测试:num=1000000000
输出109989
我觉得我这个比**《程序员代码面试指南》**里面的回文数判断快不少!
跪求大佬比我这代码更快的,新手求最快,求指点
C++代码:

#include <iostream>
#include<time.h>
void mysym(int num){
	int temp,n,k,count=0;
	for(int i=10;i<=num;i++){
		n=i;
		k=n%10;
		n/=10;
		if(k==0) continue;
		while(k<=n){		
			int x=n%10;				
			temp=k*10+x;
			if(k==n||temp==n) {
				count++;
				break;
			}
			n/=10;
			k=temp;			
		}				
	}	
	std::cout<<count<<std::endl;	
}

int main()
{
int num=1000000000;
	 // 2147483647
 	clock_t start,end;
    start=clock();
 	mysym(num); //计算函数 
    end=clock();
    std::cout<<"mysym运行时间"<<(double)(end-start)/CLOCKS_PER_SEC<<std::endl;

  return 0;    
}

Java代码:


public class Main {
	public static void main(String[] args) {
		long start=System.currentTimeMillis();   //获取开始时间
		int temp,n,k,count=0;
		for(int i=10;i<=1000000000;i++){
			n=i;
			k=n%10;
			n/=10;
			if(k==0) continue;
			while(k<=n){		
				int x=n%10;					
				temp=k*10+x;
				if(k==n||temp==n) {
					count++;
					break;
				}
				n/=10;
				k=temp;			
			}				
		}		
		System.out.println(count);		 
		long end=System.currentTimeMillis(); //获取结束时间	 
		System.out.println("程序运行时间: "+(end-start)+"ms");	
	}
}

相关标签: java