码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] License Key Formatting

时间:2018-01-04 00:31:27      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:could   nsis   cal   mat   must   esc   auto   str   log   

You are given a license key represented as a string S which consists only alphanumeric character and dashes. The string is separated into N+1 groups by N dashes.

Given a number K, we would want to reformat the strings 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 all lowercase letters should be converted to uppercase.

Given a non-empty string S and a number K, format the string according to the rules described above.

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.

 

Note:

  1. The length of string S will not exceed 12,000, and K is a positive integer.
  2. String S consists only of alphanumerical characters (a-z and/or A-Z and/or 0-9) and dashes(-).
  3. String S is non-empty.

说一下思路:

1、将给定字符串中的数字和字母找出来并将小写字母都传换成大写字母

2、将得到的字符串反转。

3、从尾到头来分割字符串并在K位加入‘-’

4、如果最后一位存在‘-’,则将其删除

class Solution {
public:
    string licenseKeyFormatting(string S, int K) {
        string str;
        for (auto& c : S) {
            if (isalnum(c)) {
                if (isdigit(c))
                    str += c;
                else
                    str += toupper(c);
            }
        }
        int N = str.size();string res;
        reverse(str.begin(), str.end());
        for (int i = N - 1; i >= 0; i--) {
            if (i % K != 0) { 
                res += str[i];
            }
            else {
                res += str[i];
                res += -;
            }
        }
        if (res.back() == -)
            res.pop_back();
        return res;
    }
};
// 12 ms

 

 

[LeetCode] License Key Formatting

标签:could   nsis   cal   mat   must   esc   auto   str   log   

原文地址:https://www.cnblogs.com/immjc/p/8185995.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!