1002. Find Common Characters
선택한 UI 언어에 맞게 문제 텍스트를 러시아어에서 번역합니다. 코드는 변경하지 않습니다.
Если задан 배열 строк words, return 배열 всех символов, которые встречаются во всех 문자열х внутри слов (включая дубликаты). Вы можете вернуть ответ в любом порядке.
예제:
Input: words = ["bella","label","roller"]
Output: ["e","l","l"]
C# 해법
매칭됨/원본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++ 해법
자동 초안, 제출 전 검토#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 해법
매칭됨/원본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 해법
매칭됨/원본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
Инициализация частотного 배열а:
Создайте 배열 для хранения минимальной частоты каждого символа, который будет встречаться во всех словах.
Обработка каждого слова:
Для каждого слова создайте временный 배열 для хранения частоты каждого символа в этом слове.
Обновите основной частотный 배열, сравнивая его с временным 배열ом и сохраняя минимальные частоты каждого символа.
Формирование результата:
Создайте результирующий 배열, добавляя каждый символ столько раз, сколько его минимальная частота.
😎
Vacancies for this task
활성 채용 with overlapping task tags are 표시됨.
아직 활성 채용이 없습니다.