LeetCode #1002 FindCommonCharacters. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트
간만에 보람있는 문제였고
성능 잘나옴
Runtime: 12 ms, faster than 94.94% of C++ online submissions for Find Common Characters.
Memory Usage: 11.5 MB, less than 23.59% of C++ online submissions for Find Common Characters.
LeetCode #1002
Q.
Given an array A of strings made only from lowercase letters, return a list of all characters that show up in all strings within the list (including duplicates). For example, if a character occurs 3 times in all strings but not 4 times, you need to include that character three times in the final answer.
You may return the answer in any order.
소문자로만 이루어진 문자열의 배열 A가 주어지는데, 모든 문자열에서 나타나는 모든 문자의 리스트를 리턴해라 (중복된 것도 포함해서). 예를 들면, 어떤 문자가 모든 문자열에서 3번 나타나면, 마지막 리스트에 그 문자가 3번 추가 되어있어야 한다. 반환값은 어떤 순서로 나타나든 상관없다. -> 예제보면 바로 이해됨
e.g.
Example 1:
Input: ["bella","label","roller"]
Output: ["e","l","l"]
Example 2:
Input: ["cool","lock","cook"]
Output: ["c","o"]
Note:
- 1 <= A.length <= 100
- 1 <= A[i].length <= 100
- A[i][j] is a lowercase letter
Process
// Process
//1. Input string vector
//2. Make lowercase dynamic table as many as string vector size
//3. Fill the table in using string character
//4. Iterate lowercase table (i)
// 4.1. Iterate lowercase vector size dimension
// 4.1.1. Check every char count is over than 0
// 4.2. If every char count is over than 0
// 4.2.1. -> Get min count of every char count in that i index table
// 4.2.2. -> Put that i+97 ascii as many as min count to result vector
//5. Return result vector
// 처리과정
//1. 스트링 벡터 입력받는다.
//2. 소문자 다이나믹 테이블을 스트링벡터 사이즈만큼 만들어둔다.
//3. 만든 다이나믹 테이블들을 스트링의 문자들 개수로 채워준다.
//4. 소문자 테이블 (26개) 개수 반복한다 (인덱스 i )
// 4.1. 스트링 개수만큼 반복한다
// 4.1.1. 모든 스트링에서 해당 문자가 나온 횟수가 1 이상인지 확인한다.
// 4.2. 모든 스트링에서 해당 문자가 나온 횟수가 1 이상이면
// 4.2.1. 각 횟수 중에서 가장 적게 나온 횟수를 찾는다.
// 4.2.2. 가장 적게 나온 횟수만큼 결과 벡터에 해당 테이블 문자 ascii 값을 스트링으로 바꿔 넣는다.
//5. 결과 반환한다.
Code.. lemme see example code!!!
코드.. 예제코드를 보자!!!
class Solution {
public:
vector<string> commonChars(vector<string>& A) {
vector<string> resultVector;
if (A.size() > 0) {
vector<vector<int>> lowerTable;
for (int i = 0; i < 26; ++i) {
vector<int> table;
for (int j = 0; j < A.size(); ++j) {
table.push_back(0);
}
lowerTable.push_back(table);
}
for (int i = 0; i < A.size(); ++i) {
for (int j = 0; j < A[i].size(); ++j) {
++lowerTable[A[i][j] - 97][i];
}
}
for (int i = 0; i < 26; ++i) {
bool isFalse = false;
for (int j = 0; !isFalse && j < lowerTable[0].size(); ++j) {
if (lowerTable[i][j] <= 0) {
isFalse = true;
}
}
if (!isFalse) {
int min = lowerTable[i][0];
for (int j = 1; j < lowerTable[i].size(); ++j) {
if (min > lowerTable[i][j]) {
min = lowerTable[i][j];
}
}
for (int j = 0; j < min; ++j) {
string tempString;
tempString = (char)i + 97;
resultVector.push_back(tempString);
}
}
}
}
return resultVector;
}
};
Something else you might like...?
2019/02/19 - [Life/Health care] - Lysine 라이신 usage/side effects/dosage 효과/효능/부작용/성인,소아 용법, 복용법
2019/02/28 - [Life/Health care] - Vitamin K, 비타민 K usage/side effects/dosage 효능/부작용/성인,소아 용법