CodeKata 05.


質問する
sは、複数の括弧からなるStringパラメータである.
true/false、sが有効かどうかを返してください.
「(」、「)」、「[」、「]」、「{」、「}」の6種類があります.
次の場合に有効です.
かっこを開始するには、同じカッコで終了します.
かっこの順序は正しいです.
例:
s = "()"
return true
s = "()[]{}"
return true
s = "(]"
return false
s = "([)]"
return false
s = "{[]}"
return true
1.私が提出した答え:いつも間違っている
function isValid(s) {

  const shape =['(', ')', '[', ']', '{', '}'];
  const a = shape[0]+ shape[1];
  const b = shape[2] + shape[3];
  const c = shape[4] + shape[5];

  for( let i= 0; i < shape.length; i++) {
      for (let j = 0; j < shape.length; j++) {
        const result = shape[i] + shape[j];
        if (result === a || b|| c){
        return true;
      } else {
        return false;
      }
    } 
  }
}

console.log(isValid('[}]'));
2.見つけた答え
function isValid(s) {
ss = s.split('')
obj = {
  "(":")",
  "[":"]",
  "{":"}"
}
  
 for (let i = ss.length-1 ; i>-1 ; i--){
  if ((ss[0]===")" || ss[0]==="]"||ss[ss.length-1]==="}")||(ss[ss.length-1]==="(" || ss[ss.length-1]==="["||ss[ss.length-1]==="{"))return false;

   if (ss[i]==="(" || ss[i]==="["||ss[i]==="{"){
     
     if(ss[i+1]===obj[ss[i]]){

        let removed = ss.splice(i,2);
        isValid(ss.join(""));
    }else{
       return false;
     }
   }       if(ss.length===0)return true;
 } 
}

isValid("(())}") ==> false
https://github.com/rumbarum/CodeKata/blob/master/Week2_Day3.md
3.感じ
ただ、、、、なぜ挑戦の意味を思い付かなかったのか、、、相手を使うのか.