[JS]Solution

sumin·2023년 3월 9일

프론트

목록 보기
4/6

FIrst Solution

  1. Lowercase the text.
  2. If there is a string in the object, increase or decrease it



function charCount2(str){
  

  
  let result={};

  for(let i=0; i<str.length; i++){
    let char=str[i].toLowerCase();

    if(result[char]>0){ true?
      result[char]++;			++		
    }else{
      result[char]=1;			=1;
    }
  }
  return result; { y: 1, o: 1, u: 1, d: 5, w: 2, r: 2, ' ': 1, e: 1, a: 1, m: 1 }
}
  
  
function charCount(str){
  let obj={};

  for(let i=0; i<str.length; i++){
    let char=str[i].toLowerCase();

    if(/[a-z0-9]/.test(char)){
      if(obj[char]>0){
        obj[char]++;
      }else{
        obj[char]=1;
      }
    }
  }
}
  
  
  


console.log(charCount('your dream'));
console.log(charCount2('youddddwwr dream'));




function charCount(str){
  let obj={};

  for(let char of str){
     char=char.toLowerCase();

    if(/[a-z0-9]/.test(char)){
    obj[char]=++obj[char]||1;

    }
  }
return obj;
}


Frequncy Counter




function same(arr1,arr2){


  

  if(arr1.length!==arr2.length){
    return false;
  }

  for(let i=0; i<arr1.length; i++){
    let currentIndex=arr2.indexOf(arr1[i]**2);
    if(currentIndex===-1){
      return false
    }
    arr2.splice(currentIndex,1);
  }
  return  true;
}


function same1(arr1,arr2){
  if(arr1.length!==arr2.length){

    return false;
  }

  let frequencyCounter1={};
  let frequencyCounter2={};


  for(let val of arr1){
    frequencyCounter1[val]=(frequencyCounter1[val]||0)+1;
  }
  
  for(let val of arr2){
    frequencyCounter2[val]=(frequencyCounter2[val]||0)+1;
  }

  for(let key in frequencyCounter1){
    if(!(key**2 in frequencyCounter2)){
      return false;
    }
    if(frequencyCounter1[key**2]!==frequencyCounter2[key]){
      return false;
    }
  }
  return true;
  
}





console.log(same1([1,2,3,2],[4,4,1,9]));






function validAnagram(first,second){


  if(first.length!==second.length){
    return false;
  }

  const lookup={};

  for(let i=0; i<first.length; i++){
    let letter=first[i];

    lookup[letter]?lookup[letter]+=1:lookup[letter]=1;
  }


  for(let i=0; i<second.length; i++){
    let letter=second[i];

    if(!lookup[letter]){
      return false;
    }else{
      lookup[letter]-=1;
    }
  }

  return true;


}

console.log(validAnagram('anagram','nagaram'));

isSubsequence 문제풀이


 */
function isSubsequence(a, b) {
    let idxA = 0;
    let idxB = 0;
    while (idxA < a.length && idxB < b.length) {
        if (a[idxA] === b[idxB]) {
            idxA++;
            idxB++;
        } else {
            idxB++;
        }
    }
    if (idxA === a.length) {
        return true;
    } else {
        return false;
    }
}
console.log(isSubsequence('hello', 'hello world')); // true
console.log(isSubsequence('sing', 'sting')); // true

//인덱스를 같이움직이며 순환해줌
//while문 탈출시 idxA가 a.length랑 똑같다는것은 모든단어를 포함했다는것 !
//아니라면 false

maxSubArray




let maxSubArray=function(nums){
 

  for(let i=1; i<nums.length; i++){
    nums[i]=Math.max(nums[i],nums[i]+nums[i-1]);


  }
  return Math.max(...nums);		//17
}





console.log(maxSubArray([-3,3,5,-3,-7,9,-2,10,-5,-2]));



function maxSubarraysum(arr,num){

  let maxsum=0;
  let tempmsum=0;

  if(arr.length<num) return null;


  for(let i=0; i<num; i++){
    maxSum+=arr[i];
  }		//첫번째 합계를 만들어줌
  //세숫자들의 합계를 구하고
  
  //max에 저장
  

  tempmsum=maxSum;

  
  //세숫자들을 더했기떄문에  시작위치는 num부터 시작하도록함
  
  for(let i=num; i<arr.length; i++){
    //배열값 하나를뺴고 하나를 이어붙이는 방식
    tempmsum=tempmsum-arr[i-num]+arr[i];
    maxSum=Math.max(maxSum,tempmsum);
  }

  return maxSum;
}


maxSubarraySum([2,6,9,2,1,8,5,6,3],3);
//세숫자의 합계를 구한후 그다음번쨰꺼부터 시작하도록 해야함
/**2,6,9는 구했기떄문에 그다음꺼부터 시작하게 만들음
뒤에껄 뺴고 << 삭제시키고
앞에껄 추가함

슬라이딩 윈도우방식


// 1.6,9,2  -2 -+2 =
// 9,2,1  


2개의 댓글

comment-user-thumbnail
2023년 3월 9일

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ안뇽 이거니? 너도 입문했구나 ㅎㅎㅎ 롤이나들어왕

1개의 답글