難度簡單
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。返回數值範圍為 [−231, 231 − 1],超出返回0。示例1輸入: 123
輸出: 321
示例2輸入: -123
輸出: -321
示例3輸入: 120
輸出: 21
我的解法(求餘)/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
let num = 0;
while(x != 0){
num = num*10+x%10;
x = parseInt(x/10);
}
if(num < -(2**31) || num > (2**31-1)){
return 0;
}
return num
};
Z 字形變換難度中等
將一個給定字符串根據給定的行數,以從上往下、從左到右進行 Z 字形排列。比如輸入字符串為 "LEETCODEISHIRING" 行數為 3 時,排列如下:之後,你的輸出需要從左往右逐行讀取,產生出一個新的字符串,比如:"LCIRETOESIIGEDHN"。請你實現這個將字符串進行指定行數變換的函數:示例1輸入: s = "LEETCODEISHIRING", numRows = 3
輸出: "LCIRETOESIIGEDHN"
示例2輸入: s = "LEETCODEISHIRING", numRows = 4
輸出: "LDREOEIIECIHNTSG"
我的解法(二元數組)/**
* @param {string} s
* @param {number} numRows
* @return {string}
*/
var convert = function(s, numRows) {
let arr = [[]];
let colIndex = 0;
let rowIndex = 0;
let flag = true; // 向下
for(let i in s){
if(i != 0 && i % (numRows-1) == 0){
flag = !flag;
}
if(flag){
arr[colIndex][rowIndex] = s[i]
rowIndex++
}else{
arr[colIndex][rowIndex] = s[i]
rowIndex--
colIndex++
arr[colIndex] = [];
}
}
let strArr = [];
arr.forEach((item,index)=>{
item.forEach((item2,index2)=>{
strArr[index2] = strArr[index2] || ""
item2 && (strArr[index2] += item2)
})
})
return strArr.join("")
};