회문, 팰린드롬이라고 한다. 낯선 명칭에 당황하겠지만은 내이름은 이효리 거꾸로 해도 이효리 같은겁니다.
토마토 이런거
인풋, 아웃풋
Input | Output |
---|---|
121 | true |
-121 | false |
10 | false |
-101 | false |
첫번째 시도(실패)
내가 착각한게 숫자를 배열화 한후의 값이랑 뒤집은 값을 비교했을때 같으면 같을거라고 생각했는데, 컴퓨터는 다르다고 합니다. 이건 컴퓨터가 못알아먹으니 패스
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if(x<-1) return false; //OK
else{
let arrX = Array.from(String(x));
let rArrX = [];
for(let i of arrX){
rArrX.unshift(i);
}
console.log(arrX);
console.log(rArrX);
if(arrX === rArrX) return true; //Not OK
else return false;
}
};
두번째 시도(성공)
또 다른 쪼개기로 split을 사용하려면 문자화가 필요합니다. 문자화.Split('') 특정 단어로 자르는걸 안넣었으니 한글자씩 잘려 배열화 됩니다. reverse를 하면 뒤집어질거고 이걸 다시 join을 하면 합쳐지죠.
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
// console.log(x.toString().split('').reverse().join(''));
return x==String(x).split('').reverse().join('')
};
세번째 시도(성공)
복습할때 정석적인 방법으로 풀어보고 싶어 다른 방법으로 시도했습니다. 일단 음수면 확실히 제끼는게 좋을것 같네요.
다음은 글자 전체를 다 탐색할 필요가 없습니다. 절반까지만 확인하면 되요.
/**
* @param {number} x
* @return {boolean}
*/
var isPalindrome = function(x) {
if(x<0) return false;
else {
let str = x.toString(),
len = str.length;
// console.log(len);
for(let i=0;i<=Math.floor(len/2);i++){
//console.log(str[i], str[len-i-1]);
if(str[i]!==str[len-i-1]) return false;
}
return true;
}
};
728x90
'프로그램 강좌' 카테고리의 다른 글
[LeetCode]14. Longest Common Prefix - javascript (0) | 2021.11.20 |
---|---|
[LeetCode] 13. Roman to Integer - javascript (0) | 2021.11.19 |
[LeetCode] 1: TwoSum - javascript (0) | 2021.11.17 |
CSS 지원 브라우저 확인 (0) | 2021.09.27 |
[CSS]:not (0) | 2021.07.04 |