在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ A string In each move, we choose one of the first Return the lexicographically smallest string we could have after any number of moves. Example 1: Input: S = 1
Output:
Example 2: Input: S = 3
Output:
Note:
给出了一个由小写字母组成的字符串 在每次移动中,我们选择前 返回我们在任意次数的移动之后可以拥有的按字典顺序排列的最小字符串。 示例 1: 输入:S = "cba", K = 1 输出:"acb" 解释: 在第一步中,我们将第一个字符(“c”)移动到最后,获得字符串 “bac”。 在第二步中,我们将第一个字符(“b”)移动到最后,获得最终结果 “acb”。 示例 2: 输入:S = "baaca", K = 3 输出:"aaabc" 解释: 在第一步中,我们将第一个字符(“b”)移动到最后,获得字符串 “aacab”。 在第二步中,我们将第三个字符(“c”)移动到最后,获得最终结果 “aaabc”。 提示:
Runtime: 40 ms
Memory Usage: 19.7 MB
1 class Solution { 2 func orderlyQueue(_ S: String, _ K: Int) -> String { 3 if K > 1 4 { 5 var arrS:[Character] = Array(S) 6 arrS.sort() 7 return String(arrS) 8 } 9 var res:String = S 10 for i in 1..<S.count 11 { 12 var tmp:String = S.subString(i) + S.subString(0, i); 13 if res > tmp {res = tmp} 14 } 15 return res 16 } 17 } 18 19 extension String { 20 // 截取字符串:从index到结束处 21 // - Parameter index: 开始索引 22 // - Returns: 子字符串 23 func subString(_ index: Int) -> String { 24 let theIndex = self.index(self.endIndex, offsetBy: index - self.count) 25 return String(self[theIndex..<endIndex]) 26 } 27 28 // 截取字符串:指定索引和字符数 29 // - begin: 开始截取处索引 30 // - count: 截取的字符数量 31 func subString(_ begin:Int,_ count:Int) -> String { 32 let start = self.index(self.startIndex, offsetBy: max(0, begin)) 33 let end = self.index(self.startIndex, offsetBy: min(self.count, begin + count)) 34 return String(self[start..<end]) 35 } 36 }
|
请发表评论