482. 密钥格式化

有一个密钥字符串 S ,只包含字母,数字以及 ‘-’(破折号)。其中, N 个 ‘-’ 将字符串分成了 N+1 组。

给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符。特别地,第一个分组包含的字符个数必须小于等于 K,但至少要包含 1 个字符。两个分组之间需要用 ‘-’(破折号)隔开,并且将所有的小写字母转换为大写字母。

给定非空字符串 S 和数字 K,按照上面描述的规则进行格式化。

示例 1:输入:S = "5F3Z-2e-9-w", K = 4
输出:"5F3Z-2E9W"
解释:字符串 S 被分成了两个部分,每部分 4 个字符;注意,两个额外的破折号需要删掉。
示例 2:输入:S = "2-5g-3-J", K = 2
输出:"2-5G-3J"
解释:字符串 S 被分成了 3 个部分,按照前面的规则描述,第一部分的字符可以少于给定的数量,其余部分皆为 2 个字符。

提示:

  • S 的长度可能很长,请按需分配大小。K 为正整数。
  • S 只包含字母数字(a-z,A-Z,0-9)以及破折号’-’
  • S 非空

解题思路

从后向前遍历,统计每k个字符为一组,并且将小写字母转换为大写,然后在每一组的分隔里面加入-,最后一组不加入分隔符-。

代码

class Solution {public String licenseKeyFormatting(String s, int k) {int n = s.length();StringBuilder sb = new StringBuilder();for (int i = n-1,cnt=0; i >=0; i--) {if(s.charAt(i)=='-') continue;sb.append(Character.toUpperCase(s.charAt(i)));cnt++;if(cnt==k&&i!=0){cnt=0;sb.append('-');}}if (sb.length()>0&&sb.charAt(sb.length()-1)=='-')sb.deleteCharAt(sb.length()-1);return sb.reverse().toString();}
}

482. 密钥格式化相关推荐

  1. LeetCode 482. 密钥格式化

    1. 题目 给定一个密钥字符串S,只包含字母,数字以及 '-'(破折号).N 个 '-' 将字符串分成了 N+1 组.给定一个数字 K,重新格式化字符串,除了第一个分组以外,每个分组要包含 K 个字符 ...

  2. leetcode 482. 密钥格式化(Java版)

    题目 https://leetcode-cn.com/problems/license-key-formatting/ 题解 题目本身不难,会有一些边界条件造成的小坑. public class So ...

  3. LeetCode简单题之密钥格式化

    题目 有一个密钥字符串 S ,只包含字母,数字以及 '-'(破折号).其中, N 个 '-' 将字符串分成了 N+1 组. 给你一个数字 K,请你重新格式化字符串,使每个分组恰好包含 K 个字符.特别 ...

  4. [Swift]LeetCode482. 密钥格式化 | License Key Formatting

    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...

  5. 力扣(415.482)补8.28

    415.字符串相加 这题我的Java也果断溢出. class Solution { public String addStrings(String num1, String num2) { long ...

  6. LeetCode题解目录

    最新更新于2020.11.27 前往LeetCode主页. 前往GitHub源码.(服务器原因,暂停同步.) 前往码云主页. 已解决 456/1878 - 简单353 中等 90 困难 13 2020 ...

  7. 如何学好C语言--你的学渣朋友告诉你

    光说不练假把式,光练不说傻把式,又练又说真把式. 真实感受,不是我不想学,是我真的不知道我哪里不会啊和得怎么做啊?本文作者当初就是这么废掉的 推荐两个练习的网站 (一)C语言网 https://www ...

  8. leetcode算法练习 JavaScript实现

    leetcode 表格内容由spider.js从leetcode-cn.com爬取. 已做题目答案也从leetcode-cn.com中爬取并生成文件. 解题进度:已解决 140/637 - 简单 94 ...

  9. LeetCode 700题 题解答案集合 Python

    2019.5.12更新至题号796,目前共有265题. 2019.5.26更新至题号72, 目前共有347题. 2019.6.16更新至题号70,目前共有382题. 2019.7.7更新至题号5120 ...

最新文章

  1. ctypealpha php_php ctype函数中文翻译和示例
  2. 电脑如何恢复声音_电脑文件剪切丢失如何恢复?99%数据都能恢复
  3. WebService简单验证:SoapHeader
  4. 丢掉DDoS的八个幻想
  5. C++实现0-1-knapsack背包问题 (附完整源码)
  6. 联想服务器看内存型号,合肥联想服务器内存条_性能无约束
  7. 经典C/C++面试题
  8. PCL1.8.0+Windows+VS2013配置
  9. MongoDB的安装和启动方法详解
  10. Exynos1080处理器性能与功耗究竟怎么样?
  11. SQL Server内存架构基础
  12. Android历史与版本变迁
  13. win10 添加虚拟服务器,win10虚拟机共享文件夹如何设置_win10虚拟机与主机共享文件夹操作方法...
  14. 【建议收藏】10个适合程序员逛的在线社区
  15. C++学习(四九二)cmake file的GLOB和GLOB_RECURSE
  16. java 解密pdf文件,PDFBox加密和解密PDF文件
  17. TiPLM---产品全生命周期管理系统
  18. android_文件下载
  19. WPF免费视频教程,来自Lynda.com
  20. 举个栗子!Tableau 技巧(116):做一个有趣的锥状柱形图

热门文章

  1. 二分(三分)+快速幂
  2. 【工作经验分享】java图片转文字
  3. 前端 HTML 常用标签 head标签相关内容 script标签
  4. Java作业09-异常
  5. 函数的定义,语法,二维数组,几个练习题
  6. Delphi关于记录文件的操作
  7. Oracle-查看oracle是否有表被锁
  8. 定义jQuery插件
  9. 什么时候用synchronized
  10. 3 MapReduce计算模型