您的位置:首页 > Web前端 > JavaScript

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  javascript