Programmers: JadenCase 문자열 만들기

KangDroid·2021년 8월 7일
0

Algorithm

목록 보기
27/27

Question

핵심

  • 딱히 꼬아진 문제는 아니고, 직관적으로 바로 풀 수 있는 문제
  • 일단 모든 문자를 Lowercase로 변환
  • 공백을 기준으로 잘라내고
  • 각 단어의 첫 글자를 대문자로 만들어내면 끝!
  • [근데 생각 의외로 이게 2단계 문제...]

Code

#include <string>
#include <vector>

using namespace std;

vector<string> split_string(string& targetString, char delimeter = ' ') {
    vector<string> splitedResult;
    string tmpBuffer = "";
    
    for (int i = 0; i < targetString.length(); i++) {
        if (targetString[i] == delimeter) {
            splitedResult.push_back(tmpBuffer);
            tmpBuffer = "";
        } else {
            char toPush = targetString[i];
            if (targetString[i] >= 'A' && targetString[i] <= 'Z') {
                // This is big letters. Make it small
                toPush = 'a' + (targetString[i] - 'A');
            }
            tmpBuffer += toPush;
        }
    }
    
    if (tmpBuffer != "") {
        splitedResult.push_back(tmpBuffer);
    }
    
    return splitedResult;
}

string solution(string s) {
    string answer = "";
    
    vector<string> spaceSplited = split_string(s);
    
    for (string eachString : spaceSplited) {
        string toConcat = "";
        // First letter should be big letter
        if (eachString.length() > 0) {
            if (eachString[0] >= 'a' && eachString[0] <= 'z') {
                toConcat += 'A' + (eachString[0] - 'a');
            } else {
                toConcat += eachString[0];
            }
            
            for (int i = 1; i < eachString.length(); i++) {
                toConcat += eachString[i];
            }
        }
        
        answer += toConcat;
        answer += " ";
    }
    
    // If last letter of S is 'empty' then we just return it.
    if (s[s.length() - 1] == ' ') {
        return answer;
    }

    return answer.substr(0, answer.length()-1);
}
profile
Student Platform[Backend] Developer

0개의 댓글

관련 채용 정보