1002. Find Common Characters

LeetCode easy original: C# #array #csharp #easy #leetcode #math #search #string
Der Aufgabentext wird für die gewählte Sprache aus dem Russischen übersetzt. Code bleibt unverändert.

Если задан Array строк words, return Array всех символов, которые встречаются во всех Zeichenketteх внутри слов (включая дубликаты). Вы можете вернуть ответ в любом порядке.

Beispiel:

Input: words = ["bella","label","roller"]

Output: ["e","l","l"]

C# Lösung

zugeordnet/original
public class Solution {
    public IList<string> CommonChars(string[] words) {
        int[] minFreq = new int[26];
        Array.Fill(minFreq, int.MaxValue);
        
        foreach (string word in words) {
            int[] freq = new int[26];
            foreach (char c in word) {
                freq[c - 'a']++;
            }
            for (int i = 0; i < 26; i++) {
                minFreq[i] = Math.Min(minFreq[i], freq[i]);
            }
        }
        
        IList<string> result = new List<string>();
        for (int i = 0; i < 26; i++) {
            for (int j = 0; j < minFreq[i]; j++) {
                result.Add(((char)('a' + i)).ToString());
            }
        }
        return result;
    }
}

C++ Lösung

Auto-Entwurf, vor dem Einreichen prüfen
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public vector<string> CommonChars(vector<string> words) {
        vector<int>& minFreq = new int[26];
        Array.Fill(minFreq, int.MaxValue);
        
        foreach (string word in words) {
            vector<int>& freq = new int[26];
            foreach (char c in word) {
                freq[c - 'a']++;
            }
            for (int i = 0; i < 26; i++) {
                minFreq[i] = min(minFreq[i], freq[i]);
            }
        }
        
        vector<string> result = new List<string>();
        for (int i = 0; i < 26; i++) {
            for (int j = 0; j < minFreq[i]; j++) {
                result.push_back(((char)('a' + i)).ToString());
            }
        }
        return result;
    }
}

Java Lösung

zugeordnet/original
public class Solution {
    public List<String> commonChars(String[] words) {
        int[] minFreq = new int[26];
        Arrays.fill(minFreq, Integer.MAX_VALUE);
        
        for (String word : words) {
            int[] freq = new int[26];
            for (char c : word.toCharArray()) {
                freq[c - 'a']++;
            }
            for (int i = 0; i < 26; i++) {
                minFreq[i] = Math.min(minFreq[i], freq[i]);
            }
        }
        
        List<String> result = new ArrayList<>();
        for (int i = 0; i < 26; i++) {
            for (int j = 0; j < minFreq[i]; j++) {
                result.add(Character.toString((char)('a' + i)));
            }
        }
        return result;
    }
}

JavaScript Lösung

zugeordnet/original
class Solution {
    commonChars(words) {
        const minFreq = new Array(26).fill(Infinity);
        
        for (const word of words) {
            const freq = new Array(26).fill(0);
            for (const char of word) {
                freq[char.charCodeAt() - 97]++;
            }
            for (let i = 0; i < 26; i++) {
                minFreq[i] = Math.min(minFreq[i], freq[i]);
            }
        }
        
        const result = [];
        for (let i = 0; i < 26; i++) {
            for (let j = 0; j < minFreq[i]; j++) {
                result.push(String.fromCharCode(97 + i));
            }
        }
        return result;
    }
}

Algorithm

Инициализация частотного Arrayа:

Создайте Array для хранения минимальной частоты каждого символа, который будет встречаться во всех словах.

Обработка каждого слова:

Для каждого слова создайте временный Array для хранения частоты каждого символа в этом слове.

Обновите основной частотный Array, сравнивая его с временным Arrayом и сохраняя минимальные частоты каждого символа.

Формирование результата:

Создайте результирующий Array, добавляя каждый символ столько раз, сколько его минимальная частота.

😎

Stellen zu dieser Aufgabe

aktive Stellen with overlapping task tags are angezeigt.

Alle Stellen
Es gibt noch keine aktiven Stellen.