넘치게 채우기

[LeetCode] 2109. Adding Spaces to a String 본문

PS/LeetCode

[LeetCode] 2109. Adding Spaces to a String

riveroverflow 2024. 12. 3. 10:47
728x90
반응형

https://leetcode.com/problems/adding-spaces-to-a-string/description/

leetcode - Adding Spaces to a String

문제 유형: 투 포인터, 문자열 처리

문제 난이도: Medium

 

문제

You are given a 0-indexed string s and a 0-indexed integer array spaces that describes the indices in the original string where spaces will be added. Each space should be inserted before the character at the given index.

  • For example, given s = "EnjoyYourCoffee" and spaces = [5, 9], we place spaces before 'Y' and 'C', which are at indices 5 and 9 respectively. Thus, we obtain "Enjoy Your Coffee".

Return the modified string after the spaces have been added.

 

0-indexed의 문자열 s와 0-indexed의 정수 배열 spaces가 주어진다.

s에 spaces의 요소들을 인덱스로 하여 공백을 삽입하시오.

 

풀이

문자열을 새로 만들것이다.

j를 만들어서 spaces를 순회하는 포인터로 쓴다.

순차적으로 s를 읽으면서, 다음을 한다:

만약 현재 인덱스가 spaces[j]라면, j를 한칸 밀고, 새 문자열에 공백을 추가한다.

그러고 s[i]를 추가한다.

 

최종 문자열을 리턴한다.

 

코드

C++

class Solution {
public:
    string addSpaces(string s, vector<int>& spaces) {
        int n = s.size();
        int m = spaces.size();
        string ans = "";

        int j = 0;
        for(int i = 0; i < n; ++i) {
            if(j < m && i == spaces[j]) {
                ans += " ";
                j++;
            }
            ans += s[i];
        }
        
        return ans;
    }
};
728x90
반응형