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...?