字母 |
UNIcode編碼 |
A |
65 |
M |
77 |
N |
78 |
Z |
90 |
unicode編碼范圍 |
對應(yīng)字符 |
處理 |
64<X<78 |
A-M |
+ 13 |
78<=X<=90 |
N-Z |
-13 |
X<=64 |
A-Z以外 |
不變 |
90<X |
A-Z以外 |
不變 |
解題思路:
- 將str內(nèi)小寫字母更換為大寫(此題條件均無小寫)
- 由上列表可得出,Unicode在何區(qū)間需要做出調(diào)整魏割,是+13廊勃,還是-13,還是不變搬男?
-
String.charCodeAt()
將字符變換為Unicode拣展;
-
String.fromCharCode(num)
將unicode還原為字符
- 建立for循環(huán)
-
Arr.join("")
將數(shù)組集合為字符串;
答案:
function rot13(str) { // LBH QVQ VG!
arr = str.toUpperCase().split(""); // to upper case of str,and split str to a array - arr;
var Arr =[];
var newstr = "";
var num=0;
for(var i=0;i<str.length;i++){
num = arr[i].charCodeAt();
if(64<num && num<78){
num +=13;
}else if(78<=num && num<=90){
num -=13;
}else{
}
Arr.push(String.fromCharCode(num));
}
return Arr.join("");
}
// Change the inputs below to test
rot13("GUR DHV9X oEBJA QBT WHZCRQ BIRE GUR YNML SBK.");
//
// A-M 65-77
// N-Z 78-90
// **** 65_77 78-90 ****
另外一種解答:
function rot13(str) { // LBH QVQ VG!
var arr=str.toUpperCase().split("");
var Arr=[];
for(var i=0;i<arr.length;i++){
var num=arr[i].charCodeAt();
if(64<num && num<78){
Arr.push(String.fromCharCode(num +13));
}else if(78<=num && num<=90){
Arr.push(String.fromCharCode(num -13));
}else{
Arr.push(String.fromCharCode(num));
}
}
return Arr.join("");
}
// Change the inputs below to test
rot13("GUR DHVPX OEBJA QBT WHZCRQ BIRE GUR YNML SBK.");
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者