当前位置: 首页 > news >正文

c语言求10000以内所有对称数,js面试题:打印1-10000内的对称数的四种解法

可能因为自己代码写的少的缘故吧,我做算法题的时候,经常会往复杂层面上考虑,比如标题上的这个问题“Javascript打印出1-10000之间的所有对称数【2012 百度】”,最开始我就绕了好几个弯。

方案一:(firefox:28ms chrome:3ms)

由内到外比对法。这是最初自己想到的方案,很二的感觉。。。从数字的位数中间向两边比对,碰到不相同的数字返回false,否则返回true,这个要考虑奇位对称数和偶位对称数的不同情况,当数字为奇位对称数的时候,首先要删除掉中间可能成为对称轴数的数字,然后再比对。

var isSymmetry = function(num){vari,l,m,n;

aSingleNumber= num.toString().split("");

l=aSingleNumber.length;if (l >= 2){if (l%2 === 1){//如果数字为奇数个数,删除掉中间的那个可能成为对称轴的数字

aSingleNumber.splice(Math.floor(l/2),1);

}for (m = aSingleNumber.length/2 -1,n = m + 1;m >= 0,n < aSingleNumber.length; m--,n++){//数字从中间向两边比对,碰到不相等则返回false

if (aSingleNumber[m] !==aSingleNumber[n]){return false;

}

}return true;

}

}

方案二(推荐):(firefox:25ms chrome:2ms)

由外到内比对法。注意把小于10(即程序中的 l<2)的数字排除掉。

var isSymmetry = function(num) {var sNum =num.toString();for (var i = 0,l = sNum.length; i < l / 2 ; i++) {if (sNum.charAt(i) !== sNum.charAt(l - 1 - i) || l < 2) {return false;

}

}return true;

}

方案三:(firefox:37ms chrome:10ms)

逆序相等比对法。我想这个答案才是面试人员真正想要的答案吧,因为只有这个才能体现对称数的本质:一个数的逆序数等于自身。但执行效率上慢了许多,猜想可能是逆序数转化用到的函数过多的原因吧,有看明白为什么慢的朋友还请不吝赐教!

var isSymmetry = function(num) {

nInversionNumber= +(num.toString().split("").reverse().join(""));if (num === nInversionNumber && num >= 10){return true;

}return false;

}

方案四:(firefox:24.7ms chrome:8ms)

逆序相等字符比对法。原理同方案三,代码的不同之处在于,判断相等的时候用的是字符串比较,性能上比方案三有所提高。

var isSymmetry = function(num) {var sInversionNumber ="",

sNum= num + "";for (i = sNum.length; i >= 0 ; i--){

sInversionNumber+=sNum.charAt(i);

}if (sNum === sInversionNumber && num >= 10){return true;

}return false;

}

下面是调用测试:

var aSymmetryNumbers = function(a,b){var result =[];for (var i = a; i < b; i++){if(isSymmetry(i)){

result.push(i);

}

}returnresult;

}//test

var foo = document.getElementById("foo");var bar = document.getElementById("bar");

foo.οnclick= function() {

bar.innerHTML= aSymmetryNumbers(0,10000);

}

按钮

http://www.lryc.cn/news/570478.html

相关文章:

  • pyhton基础【9】容器介绍四
  • 创建ActionForm
  • 常用的iPhone app快捷url链接
  • 如何用ai设计测试
  • 5G核心网UPF负载控制信息上报机制:SMF动态选路的关键技术
  • 【学习】RSA技术
  • Python•元组集合字符串
  • 09. 【Android教程】表格布局 TableLayout
  • 安全测试工具APPScan安装与使用教程
  • 一文梳理人脸识别,看完全都懂了!
  • 碎片拼接
  • urp教务系统简单利用
  • Ecovadis认证意义是什么?什么是Ecovadis认证?
  • 奇偶排序(Odd-Even Sort)
  • 如何给Fedora 15添加磁盘(或盘片)
  • wireshark使用抓包详细图文教程
  • 学习何凯明在图像中的降噪技术和识别率问题
  • 项目文章 ▏组蛋白乳酸化驱动的B7-H3表达促进肿瘤免疫逃避
  • 快准牌电脑发软件_做自媒体视频剪辑、加字幕、文字音频互转,什么软件免费又好用?...
  • AI 神经网略小白学习笔记(一) -- 环境搭建
  • 第11章 结构 笔记
  • MyBatis+Spring整合示例程序
  • 技术突破与落地应用:端到端 2.0 时代辅助驾驶TOP10 论文深度拆解系列【第四篇(排名不分先后)】
  • 2024年【全套】Android零基础入门教程(知识精讲+强化实战(1),今日头条android面试
  • 工厂模式Factory Pattern
  • 英一真题阅读单词笔记 12年
  • 创始人IP如何崛起:系统化打造的实践路径 | 创客匠人
  • qq群关系数据库 mysql_QQ群关系数据库
  • Arduino 随身听
  • 1. 2019年《斯坦福大学CS330多任务和元学习》第1讲:简介与概述【中文字幕】