LeetCode 68 Text Justification
많은 단어와 한 줄이 표시할 수 있는 최대 길이를 제시하고 모든 단어를 양쪽으로 정렬하며 마지막 줄은 왼쪽으로 정렬하고 빈칸으로 길이를 보충한다.
아이디어:
한 줄 한 줄의 레이아웃으로 한 줄 한 줄 검사할 때 최대 몇 개의 단어를 넣을 수 있다. 즉, 먼저 단어 사이에 한 개의 빈칸으로만 구분된다고 가정한다.
한 줄에 표시할 단어의 수를 확정한 후 마지막 줄인지 아닌지를 판단한다. 만약 그렇다면 단어 사이를 1개의 빈칸으로 구분하고 마지막으로 줄의 최대 길이까지 빈칸을 보충한다.마지막 줄이 아니라면 단어 뒤에 몇 개의 빈칸을 따라 계산해야 하며 계산 방법은 코드 19와 20줄을 보십시오.
코드:
class Solution {
public:
vector fullJustify(vector &words, int maxWidth) {
vector ans;
for (int i = 0; i < words.size();) {
int count = words[i].size();
int num = 1;
int j = i + 1;
while (j < words.size()) {
if (count + words[j].size() + num > maxWidth) {
break;
}
count += words[j].size();
++num;
++j;
}
stringstream ss;
if (j != words.size() && num > 1) {
int space = (maxWidth - count) / (num - 1);
int last = (maxWidth - count) - (num - 1) * space;
ss << words[i++];
while (i < j) {
for (int k = 1; k <= space; ++k) {
ss << ' ';
}
if (last) {
--last;
ss << ' ';
}
ss << words[i++];
}
ans.push_back(ss.str());
} else {
ss << words[i++];
while (i < j) {
ss << ' ' << words[i++];
}
for (int k = count + num; k <= maxWidth; ++k) {
ss << ' ';
}
ans.push_back(ss.str());
}
}
return ans;
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
python 문자열 입력으로 모든 유효한 IP 주소 생성(LeetCode 93번 문제)이 문제의 공식 난이도는 Medium으로 좋아요 1296, 반대 505, 통과율 35.4%를 눌렀다.각 항목의 지표로 말하자면 보기에는 약간 규범에 맞는 것 같지만, 실제로도 확실히 그렇다.이 문제의 해법과 의도는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.