zoukankan      html  css  js  c++  java
  • 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)
        }
    }
  • 相关阅读:
    Redis的探究
    白话插件框架原理
    Jquery文本框值改变事件兼容性
    HDU多校练习第一场4608——I_Number
    0-创建scott数据
    句柄和指针
    openssl编译(VC6.0)
    CrashRpt_v.1.4.2_vs2008_also_ok
    文件转换dll mingw
    qt windows分发工具使用(windoployqt)
  • 原文地址:https://www.cnblogs.com/johnnyzhao/p/14029795.html
Copyright © 2011-2022 走看看