zoukankan      html  css  js  c++  java
  • [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
  • 相关阅读:
    (二)使用properties配置文件,配置连接数据库的基本信息
    (一)使用properties配置文件,配置连接数据库的基本信息
    使用jdbc连接mysql数据库
    servlet动态资源发布
    JavaWeb静态资源发布
    [leedcode 138] Copy List with Random Pointer
    [leedcode 137] Single Number II
    [leedcode 136] Single Number
    [leedcode 135] Candy
    [leedcode 134] Gas Station
  • 原文地址:https://www.cnblogs.com/immjc/p/8185995.html
Copyright © 2011-2022 走看看