8.字符串换成整数
var myAtoi = function(str) {
//删除前后空格
var arr=str.replace(/^\s+|\s+$/g,"").split("");
//为空返回0
if(arr.length<1) return 0;
//flag标识最后输出的结果的正负
var flag=1,res;
//如果字符串第一个为“-”“+”那么就改变标识,然后将第一位删除
if(arr[0]=='-'){
flag=-1;
arr.shift();
}else if(arr[0]=='+'){
arr.shift();
}
//如果删除“-”“+”后面还有“-”“+”则
if(arr[0]=='-'||arr[0]=='+') return 0;
//如果前面有很多0则删除0
while(arr[0]=='0'){
arr.shift();
}
//之后判断删除0之后是否为数字不是数字返回0
if(arr[0]<'0'||arr[0]>'9') return 0;
//是数字截取不是数字前面的位
for(var i=0;i<arr.length;i++){
if(arr[i]<'0'||arr[i]>'9'){
res=Number(arr.slice(0,i).join(""));
break;
}
}
if(!res) res=arr.join("");
res=res*flag;
if(res<-2147483648) return -2147483648;
if(res>2147483647) return 2147483647;
return res;
};
console.log(myAtoi("-91283472332"));
12.整数转罗马数字
var intToRoman = function(num) {
//判断是否超出范围,直接返回
if(num<0||num>3999) return;
//定义所有可能以及对应的值
var val=[1000,900,500,400,100,90,50,40,10,9,5,4,1];
var arr=["M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"];
var res=[];
//循环每个值在num中的个数
for(var i=0;i<13;i++){
while(num>=val[i]){
num-=val[i];
res.push(arr[i]);
}
}
return res.join("");
};
13.罗马数字转整数
var romanToInt = function(s) {
var res=0;
//将所有结果加起来
for(var i=0;i<s.length;i++){
var n=s.charAt(i);
if(n=="I") res+=1;
if(n=="V") res+=5;
if(n=="X") res+=10;
if(n=="L") res+=50;
if(n=="C") res+=100;
if(n=="D") res+=500;
if(n=="M") res+=1000;
}
//如果存在以下情况减去相应的值
if(s.indexOf("IV")!=-1) res-=2;
if(s.indexOf("IX")!=-1) res-=2;
if(s.indexOf("XL")!=-1) res-=20;
if(s.indexOf("XC")!=-1) res-=20;
if(s.indexOf("CD")!=-1) res-=200;
if(s.indexOf("CM")!=-1) res-=200;
return res;
};