Description
- Check to see if a string has the same amount of ‘x’s and ‘o’s.
- 문자열이 동일한 수의 ‘x’와 ‘o’를 가지고 있는지 확인한다.
- The method must return a boolean and be case insensitive.
- boolean 값을 반환한다.
- 대소문자를 구분하지 않는다.
- The string can contain any char.
Solution 01
function xo(str) {
let countX = 0;
let countO = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] === 'x' || str[i] === 'X') countX++;
if (str[i] === 'o' || str[i] === 'O') countO++;
}
return countX === countO;
}
xo(''); // true
xo('xo'); // true
xo('OX'); // true
xo('xxOo'); // true
xo('xxxo'); // false
xo('axbo'); // true
xo('aaaxbo'); // true
Solution 02
function xo(str) {
str = str.toLowerCase();
let countX = 0;
let countO = 0;
for (let i = 0; i < str.length; i++) {
if (str[i] === 'x') countX++;
if (str[i] === 'o') countO++;
}
return countX === countO;
}
xo(''); // true
xo('xo'); // true
xo('OX'); // true
xo('xxOo'); // true
xo('xxxo'); // false
xo('axbo'); // true
xo('aaaxbo'); // true
Solution 03
function xo(str) {
return str.toLowerCase().split('x').length === str.toLowerCase().split('o').length;
}
xo(''); // true
xo('xo'); // true
xo('OX'); // true
xo('xxOo'); // true
xo('xxxo'); // false
xo('axbo'); // true
xo('aaaxbo'); // true
Solution 04
function xo(str) {
let a = str.replace(/x/gi, '');
let b = str.replace(/o/gi, '');
return a.length === b.length;
}
xo(''); // true
xo('xo'); // true
xo('OX'); // true
xo('xxOo'); // true
xo('xxxo'); // false
xo('axbo'); // true
xo('aaaxbo'); // true
Solution 05
function xo(str) {
let x = str.match(/x/gi);
let o = str.match(/o/gi);
return (x && x.length) === (o && o.length);
}
xo(''); // true
xo('xo'); // true
xo('OX'); // true
xo('xxOo'); // true
xo('xxxo'); // false
xo('axbo'); // true
xo('aaaxbo'); // true