
链接:482. 密钥格式化
题解:
class Solution {
public:
string licenseKeyFormatting(string s, int k) {
if (s.size() <= 0) {
return s;
}
std::string result;
//result.reserve(s.size());
int tail = 0;
int k_cnt = 0;
for (int i = s.size()-1; i >= 0; --i) {
if (s[i] == '-') {
continue;
}
if (k_cnt >= k) {
result.push_back('-');
++i;
k_cnt = 0;
continue;
}
if (s[i] >= '0' && s[i] <= '9') {
result.push_back(s[i]);
} else if (islower(s[i])) {
result.push_back(toupper(s[i]));
} else {
result.push_back(s[i]);
}
++k_cnt;
}
reverse(result.begin(), result.end());
return result;
}
};
该博客介绍了一个C++实现的解决方案,用于将字符串s按照指定的分组大小k进行格式化,形成类似密钥的格式。函数首先处理特殊情况,如空字符串,然后从后向前遍历字符串,遇到非数字或非小写字母的字符时保留,并在适当位置插入破折号。最后反转结果字符串以得到正确的格式。这是一个涉及字符串处理和条件判断的编程问题。
393

被折叠的 条评论
为什么被折叠?



