栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

leetcode字符串密钥格式化

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

leetcode字符串密钥格式化

字符串

class Solution {
public:
    string licenseKeyFormatting(string s, int k) {
        int c=0;
        string lack="";
        for(int i=s.length()-1;i>=0;i--){
            if(s[i]!='-'){
                if(s[i]>='a'&&s[i]<='z')
                    s[i]=s[i]-32;
                lack+=s[i];
            }
        }
        string ns="";
        for(int i=0;i=0;i--){
        //         ns+=lack[i];
        //         c++;
        //         nct++;
        //         if(c==lack.length()%k&&i==lack.length()-c&&nct 

参考后https://leetcode-cn.com/problems/license-key-formatting/solution/mi-yao-ge-shi-hua-by-leetcode-solution-xnae/改进

首先我们取出所有不为破折号的字符,题目要求对取出的字符进行重新分组,使得每个分组恰好包含 k 个字符,且必须满足第一个分组包含的字符个数必须小于等于 k,但至少要包含 1个字符。设已经取出的字符的总数为 n,只需满足第一个分组包含的字符数目刚好等于n mod k,剩余的分组包含的字符数目刚好等于 k。

我们可以从字符串 s 的末尾开始往前取出字符构建新的字符串 ans。每次取出字符时首先判断该字符是否为破折号,如果为破折号则跳过;否则将当前的字符计数 cnt 加 1,同时检查如果当前字符为小写字母则将其转化为大写字母,将当前字符加入到字符串 ans 的末尾。
对字符进行计数时,每隔 kk 个字符就在字符串 ans 中添加一个破折号。特殊情况需要处理,字符串 ans 的最后一个字符为破折号则将其去掉。
我们对已经构建的字符串 ans 进行反转即为返回结果。
复杂度分析

时间复杂度:O(N),其中 N为字符串的长度。一共需要两次遍历,第一次遍历字符串求得目标字符串,第二次遍历需要将目标字符串进行反转。

空间复杂度:O(1) 或O(N),其中 N为字符串的长度。这里的空间复杂度统计的是存储返回值以外的空间。如果使用的语言可以修改字符串,那么反转前后的字符串可以存储在同一片区域,空间复杂度为 O(1);如果不可以修改,那么反转前的字符串需要额外的空间进行存储,空间复杂度为 O(N)。
c++

class Solution {
public:
    string licenseKeyFormatting(string s, int k) {
        int c=0;
        string ans="";
        for(int i=s.length()-1;i>=0;i--){
            if(s[i]!='-'){
                // if(s[i]>='a'&&s[i]<='z')
                //     s[i]=s[i]-32;
                c++;
                ans.push_back(toupper(s[i]));
                if(c==k){
                    c=0;
                    ans.push_back('-');
                }
            }
        }
        //if(ans.length()>0&&ans[ans.length()-1]=='-')
        if(ans.length()>0&&ans.back()=='-')
            ans.pop_back();
        reverse(ans.begin(),ans.end());
        return ans;
    }
};```

java


```java
class Solution {
    public String licenseKeyFormatting(String s, int k) {
        StringBuilder ans=new StringBuilder();
        int ct=0;
        for(int i=s.length()-1;i>=0;i--){
            if(s.charAt(i)!='-'){
                ct++;
                ans.append(Character.toUpperCase(s.charAt(i)));
                if(ct==k){
                    ct=0;
                    ans.append('-');
                }
            }
        }
        if(ans.length()>0&&ans.charAt(ans.length()-1)=='-')
            ans.deleteCharAt(ans.length()-1);
        return ans.reverse().toString();
    }
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/294329.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号