js代码片段【数制转换】【判断回文】
2016-03-17 17:48
567 查看
JavaScript中数制之间的相互转换
数制之间的相互转换(适用于以2~9为基数的情况)可以利用栈将一个数字从一种数制转换成另一种
转换算法如下:
1.最高位为n%b,将此位压入栈;
2.使用n/b代替n;
3.重复步骤1和2,直到n=0且没有余数;
4.持续将栈内元素弹出,直到栈为空,以此将这些元素排列,得到转换后数字的字符串形式。
源码:
function mulBase(num,base){ var s=new Stack(); do{ s.push(num%base); num=Math.floor(num/=base); }while(num>0); var converted=""; while(s.length()>0){ converted+=s.pop(); } return converted; }
判断回文
回文:一个单词、短语数字,从前往后和从后往前写都是一样的。方法一、使用栈,将字符串中每个字符按照从左到右的顺序压入栈,当字符串中的字符都入栈后,栈内保存了一个翻转后的字符串,最后的字符在栈顶第一个字符在栈底。字符串完整压入栈后,通过持续弹出栈中的每个字母可以得到一个新的字符串,若与原来的顺序恰好相反,则相等。
源码
function isPalindrome(word){ var s=new Stack(); for(var i=0;i<word.length;i++){ s.push(word[i]); } var rword=""; while(s.length()>0){ rword+=s.pop(); } if(word==rword){ return true; }else{ return false; }
方法二、两头往中间扫描:定义头和尾,向中间扫描,如果扫描过程中,头和尾所指的字符始终完全一致则为回文串。
function isPalindrome(str){ if(str.length<1){ return false; } var front=0; var back=str.length-1; while(front<back){ if(str[front]!==str[back]){ return false; }else{ front++; back--; } } console.log(true); return true; } var str="isasi"; isPalindrome(str);
方法三、从中间向两头扫,查看对应字符是否相等。
function isPalindrome1(str){ if(str.length<1){ return false; } var m=((str.length>>1)-1)>=0 ? (str.length>>1)-1:0; var first=m; var second=str.length-1-m; while(first>=0){ if(str[first]!==str[second]){ return false; } first--; second++; } console.log(true); return true; } var str="isasi"; //isPalindrome(str); isPalindrome1(str);
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 最后一次说说闭包
- Ajax
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- Redux系列02:一个炒鸡简单的react+redux例子
- JavaScript 各种遍历方式详解
- call/apply/bind 的理解与实例分享