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

★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(shanqingyongzhi)
➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/)
➤GitHub地址:https://github.com/strengthen/LeetCode
➤原文地址:https://www.cnblogs.com/strengthen/p/9799232.html 
➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

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 = 4Output: "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 = 2Output: "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.

给定一个密钥字符串S,只包含字母,数字以及 '-'(破折号)。N 个 '-' 将字符串分成了 N+1 组。给定一个数字 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 个字符。

 

提示:

  1. S 的长度不超过 12,000,K 为正整数
  2. S 只包含字母数字(a-z,A-Z,0-9)以及破折号'-'
  3. S 非空

 1 class Solution {
 2     func licenseKeyFormatting(_ S: String, _ K: Int) -> String {
 3         var res:[String] = [String]()
 4         for index in S.indices.reversed()
 5         {
 6             if S[index] != "-"
 7             {
 8                 if res.count % (K + 1) == K
 9                 {
10                     res.append("-")
11                 }
12                 res.append(String(S[index]))
13             }
14         }
15         //字符数组转字符串
16         var str:String = String(res.joined(separator: "").reversed())
17         return str.uppercased()
18     }
19 }

132ms

 1 class Solution {
 2     func licenseKeyFormatting(_ S: String, _ K: Int) -> String {
 3         var bufferS: String = ""
 4         var result: String = ""
 5         
 6         if(S.count == 0) { return "" }
 7         
 8         for c in S {
 9             if(String(c) != "-") {
10                 bufferS += (String(c)).uppercased()
11             }
12         }
13         
14         var i: Int = bufferS.count % K == 0 ? K : bufferS.count % K
15         for c in bufferS {
16             if(i == 0) {
17                 result += "-"
18                 i = K
19             }
20             if(i > 0) {
21                 result += String(c)
22                 i -= 1
23             }
24         }
25         
26         return result
27     }
28 }

220ms

 1 class Solution {
 2     func licenseKeyFormatting(_ S: String, _ K: Int) -> String {
 3         let s = S.replacingOccurrences(of: "-", with: "").uppercased()
 4         let chas = [Character](s)
 5         
 6         var res = ""
 7         res.append(String(chas[..<(chas.count%K)]))
 8        
 9         for i in stride(from: chas.count % K, to: chas.count, by: K) {
10             if !res.isEmpty {
11                 res.append("-")
12             }
13             res.append(String(chas[i..<(i+K)]))
14         }
15         
16         return res
17     }
18 }

368ms

 1 class Solution {
 2     func licenseKeyFormatting(_ S: String, _ K: Int) -> String {
 3         var stringArray = S.split(separator: "-").joined(separator: "").map { String($0) }
 4         
 5         var returnString: String = ""
 6         
 7         while(!stringArray.isEmpty) {
 8             let subArray: String = Array(stringArray.suffix(K)).reduce("", +).uppercased()
 9             for _ in 0..<subArray.count {
10                 stringArray.removeLast()
11             }
12             returnString = stringArray.isEmpty ? "\(subArray)" + returnString : "-\(subArray)" + returnString
13             
14         }
15         
16         return returnString
17     }
18 }

1052ms

 1 class Solution {
 2     func licenseKeyFormatting(_ S: String, _ K: Int) -> String {
 3 
 4         var n = 0
 5         for c in S {
 6             if c != "-" {
 7                 n += 1
 8             }
 9         }
10         
11         var num_g = n / K
12         var first = K
13         if n % K > 0 {
14             first = n % K
15             num_g += 1
16         }
17         
18         var res = ""
19         var temp = ""
20         var count_g = 0
21         
22         for c in S {
23             if c != "-" {
24                 temp += String(c).uppercased()
25                 if (count_g == 0 && temp.count == first && count_g != num_g-1) || (count_g < num_g-1 && temp.count == K) {
26                     res += temp + "-"
27                     temp = ""
28                     count_g += 1
29                 } else if (count_g == num_g-1 && temp.count == K) || (count_g == 0 && temp.count == first) {
30                     res += temp
31                     temp = ""
32                     count_g += 1
33                 }
34             }
35         }
36         
37         return res
38     }
39 }

 

转载于:https://www.cnblogs.com/strengthen/p/9799232.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/426613.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle用户相关操作

我们主要学习数据库的一些基本操作&#xff0c;比如如何在数据库创建用户&#xff0c;授权&#xff0c;删除用户&#xff0c;回收权限&#xff0c;为用户加锁或者解锁等一些常用的操作。 首先&#xff0c;我们要知道数据库中创建用户的语句怎么写&#xff0c;看下面: 1.创建用户…

java显示时间_Java如何显示日期和时间?

在Java中&#xff0c;如何显示当前日期和时间&#xff1f;此示例显示如何使用Formatter类的fmt.format()方法和Calendar类的Calendar.getInstance()方法来显示当前日期和时间。package com.yiibai;import java.text.SimpleDateFormat;import java.util.Calendar;import java.ut…

小程序返回上一页并传参

点击返回上一页事件&#xff1a; returnPre:function(e){let pages getCurrentPages();let prevPage pages[pages.length - 2];prevPage.setData({discount: e.currentTarget.dataset.discount,})wx.navigateBack({delta: 1,})} 其中getCurrentPages() 函数用于获取当前页面栈…

Oracle数据库操作

一、Oracle数据库操作 1、创建数据库 create database databasename 2、删除数据库 drop database dbname 3、备份数据库 • 完全备份 exp demo/demoorcl buffer1024 filed&#xff1a;\back.dmp fully demo&#xff1a;用户名、密码 buffer: 缓存大小 file: 具体的备份文件地址…

java监听器原理_java监听器原理

import java.awt.event.ItemListener; import java.awt.event.ItemEvent; import javax.swing.JFrame; import javax.swing.JComboBox; public class ComBoxDemo extends JFrame { JComboBox computer; //主类别下拉框 JComboBox fittings; //配件下拉框 public ComBoxDemo() {…

Django的各种初识

1,django项目的各个文件的介绍 1.1>项目的根目录:是各个子文件的根目录,在各个文件相互导入文件的时候使用 1.2>配置文件:为django的各个文件配置相关的各种默认配置 1.3>路径和函数的对应关系:是当form表单提交数据的时候和有关于网址的东西都会来urls来查找向对应的…

IIS介绍

IIS7及以上版本提供的请求-处理架构包括以下内容&#xff1a; • Windows Process Activation Service(WAS)可以让站点支持更多协议&#xff0c;不仅仅是HTTP和HTTPS • 可以通过增加或移除模块来自定义Web服务器引擎 • 集成IIS和ASP.NET请求-处理管线 IIS中的组件 IIS包含多个…

mysql 三级联动_c#+Mysql 实现三级联动

注明&#xff1a;此文章是转载而来&#xff0c;只是稍稍改了一点。。。1、实现语言&#xff0c;c#&#xff0c;mysql,其中要引入mysq.dll需要建立三个表----对应关系2、Web.cofig3、demo.cx文件:private string conn WebConfigurationManager.ConnectionStrings["Conn&qu…

Linux卸载MariaDB

CentOS7.5 安装MySQL8.0.12 安装前&#xff1a;  先卸载 CentOS7.5默认安装的MariaDB&#xff0c;配置文件在/etc/my.cnf rpm -qa | grep mariadb 找到 使用 yum remove mariadb-libs-5.5.56-2.el7.x86_64 再次查找 rpm -qa | grep mariadb 同时,配置文件在/etc/my.cnf 也已经…

win10安装iis(亲测,工作需要)

• 点击“Windows”键进入“开始”菜单&#xff0c;点击“所有应用”&#xff0c;在所有应用菜单里点击“Windows系统”里的“控制面板” • 在控制面板对话框里点击“程序” • 在“程序”对话框里点击“启用或关闭Windows功能” • 在“Windows功能”对话框里选中“Interne…

视频展示

作业要求&#xff1a;https://edu.cnblogs.com/campus/nenu/2018fall/homework/2189 视频链接&#xff1a;http://v.youku.com/v_show/id_XMzg2Mzg1NzE0OA.html 视频播放截图及介绍&#xff1a; 1.成语考试中&#xff1a; 2.少年面对成语难得直挠头&#xff1a; 3.父亲发现孩子…

java学习(36):数组排序

/3使用Eclipse编写控制台应用程&#xff0c;接收老师输入的某个学生本学期的5此Java成绩考核&#xff0c; 并存储在5个长度的int类型数组中&#xff0c;对数组中的成绩进行从大到小排序&#xff0c;最后依次变量数组中的元素输出到控制台&#xff0c;如下示例&#xff1a; 源成…

java 8 io_Java IO8:IO简单总结

字节流、字符流继承关系前几篇文章讲解了字节流、字符流的使用&#xff0c;不过Java提供给用户的流类远不止此&#xff0c;限于篇幅原因&#xff0c;没办法一一讲解&#xff0c;而且也没有必要一一讲解&#xff0c;就像我在写博客的时候多次提到的&#xff0c;有问题的时候学会…

PHP实现高并发下的秒杀功能–Laravel

namespace App\Http\Controllers\SecKill; use App\Http\Controllers\Controller;use Exception;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Redis; class SecKillController extends Controller{ /** * 往redis的隊列中添加庫存&#xff08;用於測試的…

vuex的个人理解

看官方文档看的一脸懵逼&#xff0c;后来看到了一篇比较容易理解的博文&#xff0c;大概写下自己的理解 一、vuex是什么 是基于vue的状态管理模式&#xff0c;一般用于解决大型项目中子组件向父组件传递数据的问题 二、基本概念 1、state 需要使用store的数据存储在state里&…

java验证码的代码_java实用验证码的实现代码

本文为大家分享了java实用验证码的实现代码&#xff0c;供大家参考&#xff0c;具体内容如下1、ValidCodepackage validImg;import java.awt.Color;import java.io.IOException;import java.util.Random;import javax.servlet.ServletException;import javax.servlet.http.Http…

java学习(37):二维数组

/4 利用嵌套循环完成以下二维数组的遍历&#xff0c;体会二维数组或多维数组元素的遍历方法及每个维数数组元素的下标特点。/ import java.util.Scanner; public class test06 { public static void main(String[] args){ Scanner in new Scanner(System.in); System.out.print…

java.util.stream_java.util.stream.Stream 接口中的常用方法

流模型的操作很丰富&#xff0c;下面介绍一些常用的API。这些方法可以被分成两种&#xff1a;延迟方法返回值类型仍然是 Stream 接口自身类型的方法&#xff0c;因此支持链式调用。(除了终结方法外&#xff0c;其余方 法均为延迟方法。)终结方法返回值类型不再是 Stream 接口自…

SRM 698 div1 RepeatString

250pts RepeatString 题意&#xff1a;问最少修改多少次将一个字符串修改为AA的形式。可以插入一个字符&#xff0c;删除一个字符&#xff0c;修改字符。 思路&#xff1a;枚举分界点&#xff0c;然后dp一下。 1 /*2 * Author: mjt3 * Date: 2018-10-17 19:50:164 * Last Mod…

java学习(38):数组排序(直接排序)

/5 有一个长度为10的int类型数组,存储了10个年龄数据,利用Eclipse工具设计一个java控制台程序, 完成将这个int类型数组中年龄进行算法对比,将10个年龄重新存储在新数组中,新数组中存储年龄应符合以下规则: 降序排列 ./ import java.util.Scanner; public class test07 { public…