解题思想:首先先将破折号去除,并将所有字母转换为大写,然后计算第一组的长度,进行结果字符串的拼接,如果第一组的长度为0,则需要删除开头的’-'符号
class Solution(object):
def licenseKeyFormatting(self, s, k):
"""
:type s: str
:type k: int
:rtype: str
"""
s = s.replace("-", "").upper()
first_group_length = len(s) % k
result = s[:first_group_length]
for i in range(first_group_length, len(s), k):
result += "-" + s[i:i+k]
if not result[:first_group_length]:
result = result[first_group_length+1:]
return result
class Solution {
public:
string licenseKeyFormatting(string s, int k) {
// 去除破折号并将所有字母转换为大写
s.erase(std::remove(s.begin(), s.end(), '-'), s.end());
transform(s.begin(), s.end(), s.begin(), ::toupper);
if (s == "") {
return s;
}
int first_group_length = s.length() % k;
std::string result = s.substr(0, first_group_length);
for (int i = first_group_length; i < s.length(); i += k) {
result += "-" + s.substr(i, k);
}
if (result.substr(0, first_group_length).empty()) {
result = result.substr(first_group_length + 1);
}
return result;
}
};