본문 바로가기

Algorithm/Leet Code

LeetCode #791 CustomSortString. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접, 데이터베..

LeetCode #791 CustomSortString. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접, 데이터베이스, sql, query, 쿼리

 

 

Runtime: 0 ms, faster than 100.00% of C++ online submissions for Custom Sort String.

 

Memory Usage: 8.4 MB, less than 81.82% of C++ online submissions for Custom Sort String.

 

 

 

LeetCode #791

Q.

 S and T are strings composed of lowercase letters. In S, no letter occurs more than once.

S was sorted in some custom order previously. We want to permute the characters of T so that they match the order that S was sorted. More specifically, if x occurs before y in S, then x should occur before y in the returned string.

Return any permutation of T (as a string) that satisfies this property.

 

 S 와 T 는 소문자로 이루어진 문자열이다. S 안에는 중복되는 문자가 없다.

S 는 이전에 커스텀한 정렬 방식으로 정렬되어있다. 우리는 T 의 문자들을 순서를 매기려는데, S 의 순서와 맞추려고 한다. 구체적으로, S 에서 x 가 y 전에 나왔다면, 반환되는 문자열도 x 가 y 전에 나와야 한다.

T 의 순열을 반환하는데 이 방식을 만족하도록 해라.

(S 가 커스텀하게 정렬된 방식으로 T 도 정렬되도록 해서 반환해라)

 

 

 

 

Example :

 

Input: S = "cba" T = "abcd"

Output: "cbad"

 

 

Explanation: "a", "b", "c" appear in S, so the order of "a", "b", "c" should be "c", "b", and "a". Since "d" does not appear in S, it can be at any position in T. "dcba", "cdba", "cbda" are also valid outputs.

 

 

 

Note:

  • S has length at most 26, and no character is repeated in S.
  • T has length at most 200.
  • S and T consist of lowercase letters only.

 

 

Process

// Process
//1. Input string S, T
//2. Make rankPlate using string S, fill the order rank
//3. Make countPlate using string T, fill the count of each lowercase alphabet
//4. Make resultString using rankPlate and countPlate
// 4.1. Follow the rankPlate, fill the resultString using countPlate number
//5. Return resultString

 

 

// 처리과정

//1. string S,T 를 입력받는다.

//2. string S 를 써서 rankPlate 를 만든다. 알파벳 정렬 순서를 매긴다

//3. string T 를 써서 countPlate 를 만든다. 알파벳 별 나온 개수를 센다.

//4. rankPlate 와 countPlate 를 써서 resultString 을 만든다.

// 4.1. rankPlate 의 정렬 순서를 쓰고, resultString 에 countPlate 의 해당 정렬순서 알파벳 개수만큼 넣어준다.

//5. resultString 반환한다.

 

 

Code.. lemme see example code!!!

코드.. 예제코드를 보자!!!

 

 

 

class Solution {
public:
    string customSortString(string S, string T) {
		string resultString = "";
		int rankPlate[26] = { 0 };
		int countPlate[26] = { 0 };

		// 2. 
		for (int i = 0; i < S.size(); ++i) {
			rankPlate[S[i] - 97] = i + 1;
		}

		// 3.
		int rank = 0;
		for (int i = 0; i < T.size(); ++i) {
			rank = rankPlate[T[i] - 97];

			if (rank > 0) {
				++countPlate[T[i] - 97];
			}
			else {
				resultString += T[i];
			}
		}

		// 4.
		for (int i = 1; i <= 26; ++i) {
			for (int j = 0; j < 26; ++j) {
				if (rankPlate[j] == i) {
					for (int k = 0; k < countPlate[j]; ++k) {
						resultString += (j + 97);
					}
				}
			}
		}

		return resultString;
	}
};

 

 

 

Something else you might like...?

 

 

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/12/19 - [Algorithm/Leet Code] - LeetCode #706 DesignHashMap. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접, 데이터베이..

2019/12/11 - [Algorithm/Leet Code] - LeetCode #1047 RemoveAllAdjacentDuplicatesInString. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술..

2019/12/06 - [Algorithm/Leet Code] - LeetCode #844 BackspaceStringCompare. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접, 데이..

 

 

 

2019/11/02 - [Algorithm/Code Fights (Code Signal)] - CodeSignal Intro Databases #7 MostExpensive. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면접, ..

2019/10/31 - [Algorithm/Code Fights (Code Signal)] - CodeSignal Intro Databases #6 VolleyballResults. Algorithm,알고리즘,LeetCode,Codefights,CodeSignal,코드파이트,코드시그널,예제,그래프,Graph,example,c++,java,재귀,recursive,datastructure,techinterview,coding,코딩인터뷰,기술면..

 

 

2019/08/14 - [Life/Item review] - Mi Band 4 review, 미밴드4 후기, 장점, 단점, 리뷰, 한글, global review, 미밴드4 글로벌 후기, 리뷰, 구매, 사용방법, setting, 세팅, ProsNCons

 

 

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/03/31 - [Life/Health care] - 동시에 먹지 말아야 하는 영양제, Health supplements which should not be taken together, 비타민, vitamin, usage/side effects/dosage 효능/부작용/성인,소아 용법

2019/02/10 - [Life/Health care] - 고지방식/키토식/키토제닉/hflc 다이어트 식단, What is the Keto diet/High fat low carb/hflc/ketogenic diet, 효과/효능/부작용/방법/effect/side effect

2019/01/17 - [Life/Health care] - Zinc 아연 usage/side effects/dosage/fatigue/supplement/antioxidant/효능/부작용/성인,소아 용법/건강/피로회복/영양제/항산화

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