有一个只由字符'1'到'9'组成的长度为 的字符串 ,现在可以截取其中一段长度为 的子串并且将该子串当作十进制的正整数,如对于子串"123",其对应的十进制数字就是 。
如果想让这个正整数尽可能的大的话,问该正整数最大能是多少。
函数传入一个长度为 的字符串 和一个正整数 ,请你返回答案。
有一个只由字符'1'到'9'组成的长度为 的字符串 ,现在可以截取其中一段长度为 的子串并且将该子串当作十进制的正整数,如对于子串"123",其对应的十进制数字就是 。
如果想让这个正整数尽可能的大的话,问该正整数最大能是多少。
函数传入一个长度为 的字符串 和一个正整数 ,请你返回答案。
"321",2
32
所有长度为 的子串为:"32"和"21",显然是最大的。
"1234",4
1234
所有长度为 的子串只有它自己本身,因此答案为 。
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; } }
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; } };
public static int maxValue(String s, int k) { // write code here int MOD = (int) Math.pow(10, k - 1), max = 0, current = 0; for (int i = 0; i < s.length(); i++) { if (i < k){ max = max * 10 + (s.charAt(i) - '0'); current = max; } else { int nextTmp = current % MOD * 10 + (s.charAt(i) - '0'); if (nextTmp > max) max = nextTmp; current = nextTmp; } } return k >= s.length() ? Integer.parseInt(s) : max; }
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
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; }
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; } }
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; } }
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 }
# # 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 # # # @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
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @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; }
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] }