thảo luận Leetcode mỗi ngày

  • Người tạo chủ đề Người tạo chủ đề _Gia_Cat_Luong_
  • Ngày bắt đầu Ngày bắt đầu
Trạng thái
Không mở để trả lời thêm.
JavaScript:
function countConsistentStrings(allowed: string, words: string[]): number {
    const arr = new Array(26).fill(0);
    for (const c of allowed) arr[c.charCodeAt(0) - 'a'.charCodeAt(0)]++
    let res = 0;
    for (const w of words) {
        let check = true;
        for (const c of w) {
            if (!arr[c.charCodeAt(0) - 'a'.charCodeAt(0)]) {
                check = false;
                break;
            }
        }
        res += check ? 1 : 0;
    }
    return res;
};
3 ngày tới chắc 3 bài Hard :doubt:
Luân sợ à
zFNuZTA.png
 
C#:
public class Solution {
    public int CountConsistentStrings(string allowed, string[] words) {
        var allowedChar = new HashSet<char>(allowed);
        return words.Count(str => str.All(c => allowedChar.Contains(c)));
    }
}
viết LINQ cho nhanh chứ chưa nghĩ ra đc cách nào ngon hơn
yBBewst.png
 
Hôm trước mới làm contest lần đầu, làm đc có 1 bài, bài 3 thì submit sai tùm lum, phát cuối TLE mà nay thấy hiện rating đc 1k5 là sao nhỉ các bác :D hay 1k5 là đáy xã hội rồi :D
 
Hôm trước mới làm contest lần đầu, làm đc có 1 bài, bài 3 thì submit sai tùm lum, phát cuối TLE mà nay thấy hiện rating đc 1k5 là sao nhỉ các bác :D hay 1k5 là đáy xã hội rồi :D
1k5 đúng là đáy xã hội rồi bác.
Còn 1k3 thì thuộc 18 tầng địa ngục chứ ko thuộc xã hội nữa :after_boom:
 
Swift:
class Solution {
    func countConsistentStrings(_ allowed: String, _ words: [String]) -> Int {
        let allow = Set([Character](allowed))
        var result = 0
        for w in words {
            var isAllowed = true
            for c in w {
                if !allow.contains(c) {
                    isAllowed = false
                    break
                }
            }
            if isAllowed {
                result += 1
            }
            
        }
        return result
    }
}
 
Cơm thêm
Xin ít cơm thêm Medium ae :ah: làm hard riết mất não chán nản quá :ah:
:hungry:

Java:
class Solution {
    public int minimumLength(String s) {
        int[] map = new int[135];
        int len = s.length();

        for(int i = 0; i < s.length(); i++) {
            map[s.charAt(i)]++;
        }

        for(int i : map) {
            if (i == 0)
                continue;
       
           
            while(i > 2) {
                len -= 2;
                i-=2;
            }
        }

        return len;
    }
}

Java:
class Solution {
    public int minimumLength(String s) {
        int[] map = new int[135];
        int len = s.length();

        for(int i = 0; i < s.length(); i++) {
            map[s.charAt(i)]++;
        }

        for(int i : map) {
            if (i == 0)
                continue;
        
            len -= i % 2 == 1 ? i - 1 : i - 2;
        }

        return len;
    }
}
 
Sửa lần cuối:
Bài này easy cũng không có gì nhiều để nói, nhưng mình để ý thấy anh em hay set ans = 0 lúc đầu xong tạo thêm 1 var (i.e. isMatched) để kiểm tra xem có match hết không thì set ans += 1.

Thực ra thì set luôn ans = len(words), xong kiểm tra nếu phát hiện ký tự không có bên string allowed thì break luôn và set ans -=1. Làm thế thì không cần thêm bước check isMatched cũng như không cần thêm var trong loop nữa :)
 
Bài này easy cũng không có gì nhiều để nói, nhưng mình để ý thấy anh em hay set ans = 0 lúc đầu xong tạo thêm 1 var (i.e. isMatched) để kiểm tra xem có match hết không thì set ans += 1.

Thực ra thì set luôn ans = len(words), xong kiểm tra nếu phát hiện ký tự không có bên string allowed thì break luôn và set ans -=1. Làm thế thì không cần thêm bước check isMatched cũng như không cần thêm var trong loop nữa :)
:sweet_kiss:
 
Java:
class Solution {
    public int countConsistentStrings(String allowed, String[] words) {
        boolean[] set = new boolean[27];
        int cnt = words.length;
        for(char c:allowed.toCharArray()){
            set[c-'a'] = true;
        }
        for(String word:words){
            for(char c: word.toCharArray()){
                if(set[c-'a']== false) {
                    cnt--;
                    break;
                }
            }
        }
        return cnt;
    }
}
 
Mình có đọc được 1 ý của fen @freedom.9 là binary search chỉ cần đúng cái template 1: https://leetcode.com/explore/learn/card/binary-search/125/template-i/938/ là chiến hết tất cả dạng bài. Tin này còn chuẩn ko fen, dạo này bị BS hành nên lội lại đọc xem ý kiến của các cao nhân :D
tin chuẩn nha, BS xài 1 template avoid dc edge case. e cũng đang xài 1 template nhưng mà 2 dạng câu minimize với maximize 2 bên phải sửa vai trò left right mid ngược lại
 
Sửa lần cuối:
:hungry:

Java:
class Solution {
    public int minimumLength(String s) {
        int[] map = new int[135];
        int len = s.length();

        for(int i = 0; i < s.length(); i++) {
            map[s.charAt(i)]++;
        }

        for(int i : map) {
            if (i == 0)
                continue;
      
          
            while(i > 2) {
                len -= 2;
                i-=2;
            }
        }

        return len;
    }
}

Java:
class Solution {
    public int minimumLength(String s) {
        int[] map = new int[135];
        int len = s.length();

        for(int i = 0; i < s.length(); i++) {
            map[s.charAt(i)]++;
        }

        for(int i : map) {
            if (i == 0)
                continue;
       
            len -= i % 2 == 1 ? i - 1 : i - 2;
        }

        return len;
    }
}
26 kí tự mà sao cần tới 135 array mai fence, xài 1 loop thôi :ah:
 
Trạng thái
Không mở để trả lời thêm.

Thống kê chủ đề

Ngày tạo
_Gia_Cat_Luong_,
Người trả lời cuối
Vipluckystar,
Trả lời
17.755
Lượt xem
1.213.998
Quay lại
Lên đầu trang