본문 바로가기

Algorithm/Leet Code

LeetCode #1002 FindCommonCharacters. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결..

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. 1 <= A.length <= 100
  2. 1 <= A[i].length <= 100
  3. 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/05/26 - [Algorithm/Leet Code] - LeetCode #965 UnivaluedBinaryTree. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결..

2019/05/20 - [Algorithm/Leet Code] - LeetCode #509 FibonacciNumber. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스..

2019/05/19 - [Algorithm/Leet Code] - LeetCode #506 RelativeRanks. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

2019/05/13 - [Algorithm/Leet Code] - LeetCode #383 RansomNote. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접,연결리스트

2019/04/28 - [Algorithm/Leet Code] - LeetCode #121 BestTimeToBuyAndSellStock. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

2019/04/24 - [Algorithm/Leet Code] - LeetCode #119 Pascal'sTriangle2. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접, 파스칼..

2019/04/24 - [Algorithm/Leet Code] - LeetCode #104 MaximumDepthOfBinaryTree. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접

 

 

2019/04/14 - [Programming/C++] - C++ Math - sqrt (square root, 제곱근, 루트). stl, math.h, 씨쁠쁠, example code, 예제코드

 

 

2018/10/19 - [Programming/Design Pattern ] - Design pattern - Prototype (디자인패턴 - 프로토타입) / Java C++ C#

 

 

2019/01/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #60 sudoku. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #59 spiralNumbers. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/08 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #58 messageFromBinaryCode. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/07 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #57 fileNaming. Algorithm,알고리즘,Codefights,CodeSignal,코드파이트,코드시그널,예제,문제해결능력,example,c++,java,재귀,recursive

2019/01/04 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #56 digitsProduct. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

2019/01/04 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #55 differentSquares. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제,문제해결능력,example, c++ java c# scalar

 

 

2018/12/28 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 - (#9, Tell, Don't Ask)

2018/12/26 - [Programming/Software Architecture] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍 (1)

 

 

2019/01/14 - [Programming/Java] - 자바 메모리 누수 체크/확인/고치는 방법, Memory leak check/fix in Java application, cleanCode/좋은코드/oop/객체지향

 

 

2019/02/19 - [Life/Health care] - Lysine 라이신 usage/side effects/dosage 효과/효능/부작용/성인,소아 용법, 복용법

2019/02/16 - [Life/Health care] - Finasteride 피나스테라이드,탈모약 usage/side effects/dosage 효능/부작용/효과/sexual effect/두타스테라이드/프로페시아/propecia/finpecia/카피약/copy drug/hair loss

2019/02/25 - [Life/Health care] - Folic Acid 엽산 vitaminB9,비타민M usage/side effects/dosage 효과/효능/부작용/성인,소아 용법, 복용법

2019/02/28 - [Life/Health care] - Vitamin K, 비타민 K usage/side effects/dosage 효능/부작용/성인,소아 용법

2019/03/03 - [Life/Health care] - Vitamin B1, Thiamine, 비타민 B1, 티아민 usage/side effects/dosage 효능/부작용/성인,소아 용법