// 移动坐标
function move(str) {
const arr = str.split(';'), len = arr.length,
res = { x:0, y:0 },
re = /^[AWSD][0-9]{1,2}$/
for(let i= 0; i< len; i++) {
const word = arr[i].slice(0, 1)
if(re.test(arr[i])) {
const num = parseInt(arr[i].slice(1) || 0, 10)
console.log(i, word, num)
switch(word) {
case 'A':
res.x -= num
break
case 'D':
res.x += num
break
case 'W':
res.y += num
break
case 'S':
res.y -= num
break
default:
res.x = res.y = 0
break
}
}
}
return res
}
// console.log(move(`S87;S7;W56;S75;A8;S84;W23;W19;W40;D73;S87;A39;W97;W78;
// A53;D16;D15;A50;W41;S87;D47;W56;D56;A23;A91;S25;D61;D53;D58;W88;W58;S61;
// D69;W74;D89;A92;D39;D62;S78;W72;W73;W35;S76;W35;S36;W39;A4;`))
// 字符串排序
function sortStr(s) {
const arrStr = Array.from(s),
len = arrStr.length,
arr = []
for(let i = 0; i < 26; i++) {
for(let j= 0; j<len; j++) {
if((s.charCodeAt(j) - 65 === i) || (s.charCodeAt(j) - 97 === i)) {
arr.push(s[j])
}
}
}
for(let i = 0, k = 0; i < len; i++) {
const code = s.charCodeAt(i)
if((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) {
arrStr[i] = arr[k++]
}
}
return arrStr.join('')
}
// console.log(sortStr('Ff,zZgy-da,Ac'))
// 查找回文串
var longestPalindrome = function(s) {
const arrStr = Array.from(s),
len = s.length,
dp = Array(len).fill().map(() => Array(len))
let start = 0, maxLen = 1
for (let i = 0; i < len; i++) {
dp[i][i] = true;
}
for(let L = 2; L <= len; L++) {
for(let i = 0; i < len; i++) {
let j = L + i - 1
if( j >= len) break
if(s[i] !== s[j]) {
dp[i][j] = false
} else {
if(j -i < 3) {
dp[i][j] = true
} else {
dp[i][j] = dp[i+1][j-1]
}
}
if (dp[i][j] && j - i + 1 > maxLen) {
maxLen = j - i + 1;
start = i;
}
}
}
return arrStr.slice(start, start + maxLen).join('')
}
// console.table(findLindrome('tmikrmvnkzwffmuycgffiqnrepltnfvnggtmwkzmpjpcfuhmdcdlrupmqbimvppbnqinwcuidfckveonfgcknihwztkvrikfunegxfboluzjhxkoxdvdxoczqdkyjziqmjnnrbvcolyxijemlujjofuojdwfhcgzmmnsznhbv'))
console