您的位置:首页 > 其它

leetcode: Text Justification

2014-06-17 22:15 281 查看
最烦这种题,就是硬做,各种边界条件

class Solution {
public:
vector<string> fullJustify(vector<string> &words, int L) {

vector< string> res;
int cur_length = 0;
string cur = "";
for( int i = 0; i < words.size(); ++i){
cur_length += words[i].size();
if( cur_length > L){
justify( cur, L);
res.push_back(cur);
cur = "";
cur_length = 0;
--i;
}
else if( cur_length == L){
cur += words[i];
res.push_back( cur);
cur = "";
cur_length = 0;
}
else{
cur = cur + words[i] + ' ';
cur_length += 1;
if( i + 1 == words.size()){
while( cur.size() < L)
cur += ' ';
res.push_back(cur);
}
}
}
return res;
}
void justify( string &s, int L){
s = s.substr( 0, s.size()-1);
int sp_num = L - s.size();
string tmp;
int cnt = 0;
stringstream stream(s);
while( stream >> tmp){
++cnt;
}
if( cnt == 1 || cnt == 0){
string space( sp_num, ' ');
s += space;
return;
}
int sp_cnt = sp_num / ( cnt - 1);
int lsp_cnt = sp_num - ( cnt - 1) * sp_cnt;
string space( sp_cnt+1, ' ');
string ss;
stringstream stream2(s);
while( stream2 >> tmp){
ss += tmp;
if( lsp_cnt){
ss = ss + space + ' ';
--lsp_cnt;
}
else
ss += space;
}
s = ss.substr( 0, ss.length() - sp_cnt - 1);
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: