- Lowercase the text.
- 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;
}
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
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
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ안뇽 이거니? 너도 입문했구나 ㅎㅎㅎ 롤이나들어왕