• [LeetCode] License Key Formatting


    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
  • 相关阅读:
    Printing a DataGridView on DotNet Framework
    对比.NET PetShop和Duwamish来探讨Ado.NET的数据库编程模式
    PetShop配置readme
    关于DGVPrinter.cs中的PrintRange
    foobar2000 0.9.5正式版放出
    Another DataGridView Printer
    getline及读文件总结
    C++中文件的读取操作,如何读取多行数据,如何一个一个的读取数据
    vector的clear和swap
    写程序前不需指定数组中的常量,而是动态编译中决定
  • 原文地址:https://www.cnblogs.com/immjc/p/8185995.html
Copyright © 2020-2023  润新知