• 1663. Smallest String With A Given Numeric Value


    package LeetCode_1663
    
    /**
     * 1663. Smallest String With A Given Numeric Value
     * https://leetcode.com/problems/smallest-string-with-a-given-numeric-value/
     *
     * The numeric value of a lowercase character is defined as its position (1-indexed) in the alphabet,
     * so the numeric value of a is 1, the numeric value of b is 2, the numeric value of c is 3, and so on.
    The numeric value of a string consisting of lowercase characters is defined as the sum of its characters' numeric values.
    For example, the numeric value of the string "abe" is equal to 1 + 2 + 5 = 8.
    You are given two integers n and k. Return the lexicographically smallest string with length equal to n and numeric value equal to k.
    Note that a string x is lexicographically smaller than string y if x comes before y in dictionary order, that is, either x is a prefix of y,
    or if i is the first position such that x[i] != y[i], then x[i] comes before y[i] in alphabetic order.
    
    Example 1:
    Input: n = 3, k = 27
    Output: "aay"
    Explanation: The numeric value of the string is 1 + 1 + 25 = 27, and it is the smallest string with such a value and length equal to 3.
    
    Example 2:
    Input: n = 5, k = 73
    Output: "aaszz"
    
    Constraints:
    1. 1 <= n <= 105
    2. n <= k <= 26 * n
     * */
    class Solution {
        /*
        * solution: Greedy, fill in reverse order, Time:O(k), Space:O(n)
        * */
        fun getSmallestString(n: Int, k_: Int): String {
            var k = k_
            val chars = CharArray(n) { 'a' }
            //because filled n 'a', so reduce k by n
            k -= n
            var i = n - 1
            //replace by 'a'+25 or 'a'+k
            while (k > 0) {
                val closestOne = Math.min(25, k)
                chars[i] = chars[i] + closestOne
                k -= closestOne
                i--
            }
            return String(chars)
        }
    }
  • 相关阅读:
    IE6兼容问题
    清除浮动的几种方法
    CSS的继承性和层叠性
    CSS基础选择器复习
    梦与醒,进与退
    CSS的入门概念
    HTML的入门概念
    弹性布局整理
    点击评论加入输入框(笔记)
    css命名(笔记)
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14029795.html
Copyright © 2020-2023  润新知