js输出0-10000的对称数字
方法一:
遍历0-100000的每个数字,转换为字符串
对称数字 有一个这样的规律
比方说
1 0 0 1; str[0] == str[str.length-1]; str[1] == str[str.length-1-1]; 10101; str[0] == str[str.length-1]; str[1] == str[str.length-1-1];
//遍历字符串时只需要遍历到中间数字,比方说10201;只需遍历到2;
依照上面整理的规律有了如下的方法.
1 function isSymNum(start,end){ 2 start = (start<=11?11:start); 3 for(var i = start;i<=end;i++){ 4 var sIndex = i.toString(); 5 var len = sIndex.length; 6 var iHalf = len/2; 7 var bFlag = true; 8 for(var j = 0;j<=iHalf;j++){ 9 10 if(sIndex.charAt(j) != sIndex.charAt(len-1-j)){ 11 //console.log(sIndex); 12 bFlag = false; 13 } 14 } 15 bFlag && console.log(sIndex) 16 } 17 } 18 19 isSymNum(0,100000);
方法2:
对称数还有如下规律
101;1001;11011;
通过颠倒字符顺序过来后 还是
101;1001;11011;
这个方法不像上个方法每次循环需要额外在内部再来一次字符串的循环,理论上性能应该会更高。
function isSymNum(start,end){
start = (start<=11?11:start);
for(var i = start;i<=end;i++){
var strI = +(i.toString().split('').reverse().join(''));
if(strI == i){
console.log(i);
}
}
}