首页 > 试题广场 >

最大值

[编程题]最大值
  • 热度指数:3625 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解

有一个只由字符'1'到'9'组成的长度为 的字符串 ,现在可以截取其中一段长度为 的子串并且将该子串当作十进制的正整数,如对于子串"123",其对应的十进制数字就是

如果想让这个正整数尽可能的大的话,问该正整数最大能是多少。

函数传入一个长度为 的字符串 和一个正整数 ,请你返回答案。

示例1

输入

"321",2

输出

32

说明

所有长度为  的子串为:"32"和"21",显然是最大的。   
示例2

输入

"1234",4

输出

1234

说明

所有长度为  的子串只有它自己本身,因此答案为  。   

备注:
滑窗截取所有长度为k的子串,并将其转化为十进制数,然后求得最大值就可以了
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param k int整型 
     * @return int整型
     */
    public int maxValue (String s, int k) {
        // write code here
        int maxValue = -1;
        for(int i = 0; i <= s.length() - k; i++)
            maxValue = Math.max(maxValue, Integer.parseInt(s.substring(i, i + k)));
        return maxValue;
    }
}

发表于 2021-10-26 21:43:25 回复(0)
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param k int整型 
     * @return int整型
     */
    int maxValue(string s, int k) {
        // write code here
        int n = s.length();
        if(k>=n) return stoi(s);
        int pre = stoi(s.substr(0, k));
        for(int i=1; i<n-k; i++)
        {
            int val = stoi(s.substr(i, k));
            if(val > pre)
                pre = val;
        }
        return pre;
    }
};

发表于 2022-08-14 09:43:52 回复(0)
class Solution {
public:
    int maxValue(string s, int k) {
        int Max=stoi(s.substr(0,k));
        
       for(int i=1;i+k<s.size();i++)
       {
           int num=stoi(s.substr(i,k));
           Max=max(Max,num);
       }
        return Max;
    }
};

发表于 2022-01-14 16:55:18 回复(0)
class Solution:
    def maxValue(self , s , k ):
        max_num = 0
        for i in range(len(s) - k + 1):
            num = int(s[i:i+k])
            if num > max_num:
                max_num = num
        return max_num


发表于 2021-10-25 11:18:37 回复(1)
functionmaxValue( s ,  k ) {
    const arr = [];
    for(let i = 0;i < s.length;i++){
        if(k < s.length){
            arr.push(s.substring(i,k++));
        }
    }
    arr.sort();
    arr.reverse();
    return arr[0];    
}
发表于 2021-10-20 13:47:21 回复(0)
public static int maxValue (String s, int k) {
        int startIndex = 0;
        int endIndex = k;
        TreeSet treeSet = new TreeSet();
        for (int i = 0; i <= s.length() - k; i++) {
            String substring = s.substring(startIndex, endIndex);
            Integer integer = Integer.valueOf(substring);
            treeSet.add(integer);
            startIndex += 1;
            endIndex+=1;
        }
        Object last = treeSet.last();
        Integer integer1 = (Integer) last;
        return integer1;
    }


解题思路:
(1)先将输入的字符串S截取为指定K长度的字串,再将字串转换为int类型
(2)将截取到的字串存入一个集合中
(3)将集合中的数据排序
   这里为了满足运行时间和运行内存,我选择将截取到的字串放入到TreeSet集合中,因为TreeSet集合默认实现了自然排序,这样我们直接取最后一个数据就可以了
发表于 2021-10-13 17:40:02 回复(1)
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param k int整型 
     * @return int整型
     */
    public int maxValue (String s, int k) {
        // write code here
        // 1 2 3 4
        int max = Integer.MIN_VALUE;
        for(int i = 0; i < s.length() - k + 1; i++) {
            int cur = Integer.valueOf(s.substring(i, i + k)); 
            if(max < cur) max = cur;
        }
        return max;
    }
}

编辑于 2024-01-14 15:54:33 回复(0)
import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @param k int整型 
     * @return int整型
     */
    public int maxValue (String s, int k) {
        // write code here
        int max=Integer.MIN_VALUE;
        for(int i=0;i<=s.length()-k;i++){
            int num=Integer.valueOf(s.substring(i,i+k));
            max=Math.max(num,max);
        }
        return max;
    }
}

发表于 2023-06-24 11:34:59 回复(0)
package main

import "strconv"

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @param k int整型 
 * @return int整型
*/
func maxValue( s string ,  k int ) int {
    max:=s[:k]
    for i:=1;i+k<=len(s);i++{
        str:=s[i:i+k]
        if str>max{
            max=str
        }
    }
    x,_:=strconv.Atoi(max)
    return x
}

发表于 2023-03-09 20:55:27 回复(0)
#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
# 
# @param s string字符串 
# @param k int整型 
# @return int整型
#
class Solution:
    def maxValue(self , s , k ):
        # write code here
        ans = -1 
        for i in range(len(s)-k+1):
            ans = max(ans,int(s[i:i+k]))
        return ans

发表于 2022-12-16 17:22:33 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @param k int整型 
 * @return int整型
 */
function maxValue( s ,  k ) {
    // write code here
    if(k==s.length){
        return parseInt(s)
    }
    let max=0;
    for(let i=0;i<s.length;i++){
        if((i+k)<=s.length){
            let str=s.slice(i,i+k)
            if(parseInt(str)>max){
                max=parseInt(str)
            }
          }
    }
    return max
}
module.exports = {
    maxValue : maxValue
};
发表于 2022-08-29 11:10:32 回复(0)
python实现,放入数组求最大值,占用内存可能较多
def maxValue(s, k):
    numlist = []
    for i in range(0,len(s)):
        num = int(s[i:k + i])
        numlist.append(num)
    return max(numlist)

发表于 2022-08-18 10:42:45 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 *
 * @param s string字符串
 * @param k int整型
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int maxValue(char* s, int k ) {
    // write code here
    int long long ret = 0;
    char* retStr = NULL;
    char* p1 = NULL;
    char* p2 = NULL;
    if ((s == NULL) || (k == 0)) {
        return ret;
    }

    if (k == strlen(s)) {
        return atoi(s);
    }
    retStr = (char*)malloc(k);
    for (int i = 9; i > 0; i--) {
        p1 = strchr(s, i + '0');
        if (p1 != NULL) {
            if (strlen(p1) >= k) {
                p2 = strchr(p1 + 1, i + '0');
                while (p2 != NULL) {
                    if ((strlen(p2) >= k) && (strcmp(p2, p1) > 0)) {
                        p1 = p2;
                    }
                    p2 = strchr(p2 + 1, i + '0');
                }
                break;
            }
        }
    }
    strncpy(retStr, p1, k);
    return atoi(retStr);
}
发表于 2022-07-10 14:18:49 回复(0)
class Solution:
    def maxValue(self , s , k ):
        # write code here
        n = len(s)
        if k == len(s):
            return s
        max_num = -float("inf")
        for i in range(n-k):
            max_num = max(max_num,int(s[i:i+k]))
        return max_num
发表于 2022-06-27 08:56:46 回复(0)
public int maxValue (String s, int k) {
        int[] a=new int[s.length()-k+1];
        for(int i=0;i+k-1<s.length();i++)
        a[i]=Integer.valueOf(s.substring(i,i+k)).intValue();
        return Arrays.stream(a).max().getAsInt();
    }

发表于 2022-05-13 11:53:32 回复(0)
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @param k int整型 
 * @return int整型
 *
 * C语言声明定义全局变量请加上static,防止重复定义
 */
int maxValue(char* s, int k) {
    int i,len=strlen(s);
    int max=0;
    int index=0;
    for(i=1;i<=len-k;i++){
        if(s[i]>s[index]) index=i;
        else if((s[i]==s[index])){
            int j=i,temp=index;
            while(j<i+k&&temp<index+k){
                if(s[temp]>s[j]) break;
                else if(s[j]>s[temp]){
                    index=i;
                    break;
                }
                else{
                    j++;
                    temp++;
                }
            }
        }
        else continue;
    }
    for(i=index;i<index+k;i++){
    	max=max*10+(s[i]-'0');
	}
    return max;
}

发表于 2022-04-28 20:36:27 回复(0)
class Solution:
    def maxValue(self , s , k ):
        # write code here
        res = []
        for i in range(len(s)-k+1):
            sub = s[i:i+k]
            res.append(int(sub))
        return max(res)

发表于 2022-04-25 16:14:13 回复(0)
class Solution:
    def maxValue(self , s , k ):
        # write code here
        s1 = list(map(int,str(s)))
        max1 = 0
        for i in range(len(s1)-k+1):
            s_temp = s1[i:i+k]
            temp = int(''.join([str(j) for j in s_temp]))
            if temp>max1:
                max1 = temp
        return max1
发表于 2022-04-02 10:13:01 回复(0)
function maxValue( s ,  k ) {
    // write code here
     
        var arr = [];
        if(k>s.length || k == s.length){
            return s;
        }
        for(var i = 0;i<s.length;i++){
            if(k+i>s.length){
                break;
            }else{
                arr.push(s.slice(i,k+i))
            }
        }
        console.log(arr);
        console.log(arr.sort());
        return arr[arr.length-1]
     
}

发表于 2022-03-29 14:25:38 回复(0)
class Solution:
    def maxValue(self , s , k ):
        # write code here
        mx = -1
        for i in range(len(s) - k + 1):
            ps = int(s[i:i+k])
            mx = max(ps, mx)
        return mx

发表于 2022-03-03 09:39:53 回复(0)