返回介绍

solution / 0400-0499 / 0482.License Key Formatting / README_EN

发布于 2024-06-17 01:04:00 字数 4041 浏览 0 评论 0 收藏 0

482. License Key Formatting

中文文档

Description

You are given a license key represented as a string s that consists of only alphanumeric characters and dashes. The string is separated into n + 1 groups by n dashes. You are also given an integer k.

We want to reformat the string s such that each group contains exactly k characters, except for the first group, which could be shorter than k but still must contain at least one character. Furthermore, there must be a dash inserted between two groups, and you should convert all lowercase letters to uppercase.

Return _the reformatted license key_.

 

Example 1:

Input: s = "5F3Z-2e-9-w", k = 4
Output: "5F3Z-2E9W"
Explanation: The string s has been split into two parts, each part has 4 characters.
Note that the two extra dashes are not needed and can be removed.

Example 2:

Input: s = "2-5g-3-J", k = 2
Output: "2-5G-3J"
Explanation: The string s has been split into three parts, each part has 2 characters except the first part as it could be shorter as mentioned above.

 

Constraints:

  • 1 <= s.length <= 105
  • s consists of English letters, digits, and dashes '-'.
  • 1 <= k <= 104

Solutions

Solution 1

class Solution:
  def licenseKeyFormatting(self, s: str, k: int) -> str:
    s = s.replace('-', '').upper()
    res = []
    cnt = (len(s) % k) or k
    t = 0
    for i, c in enumerate(s):
      res.append(c)
      t += 1
      if t == cnt:
        t = 0
        cnt = k
        if i != len(s) - 1:
          res.append('-')
    return ''.join(res)
class Solution {
  public String licenseKeyFormatting(String s, int k) {
    s = s.replace("-", "").toUpperCase();
    StringBuilder sb = new StringBuilder();
    int t = 0;
    int cnt = s.length() % k;
    if (cnt == 0) {
      cnt = k;
    }
    for (int i = 0; i < s.length(); ++i) {
      sb.append(s.charAt(i));
      ++t;
      if (t == cnt) {
        t = 0;
        cnt = k;
        if (i != s.length() - 1) {
          sb.append('-');
        }
      }
    }
    return sb.toString();
  }
}
class Solution {
public:
  string licenseKeyFormatting(string s, int k) {
    string ss = "";
    for (char c : s) {
      if (c == '-') continue;
      if ('a' <= c && c <= 'z') c += 'A' - 'a';
      ss += c;
    }
    int cnt = ss.size() % k;
    if (cnt == 0) cnt = k;
    int t = 0;
    string res = "";
    for (int i = 0; i < ss.size(); ++i) {
      res += ss[i];
      ++t;
      if (t == cnt) {
        t = 0;
        cnt = k;
        if (i != ss.size() - 1) res += '-';
      }
    }
    return res;
  }
};
func licenseKeyFormatting(s string, k int) string {
  s = strings.ReplaceAll(s, "-", "")
  cnt := len(s) % k
  if cnt == 0 {
    cnt = k
  }
  t := 0
  res := []byte{}
  for i, c := range s {
    res = append(res, byte(unicode.ToUpper(c)))
    t++
    if t == cnt {
      t = 0
      cnt = k
      if i != len(s)-1 {
        res = append(res, byte('-'))
      }
    }
  }
  return string(res)
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文