(LeetCode 每日一题)3403. 从盒子中找出字典序最大的字符串 I (贪心+枚举)
题目:3403. 从盒子中找出字典序最大的字符串 I
题目:贪心+枚举+字符串,时间复杂度0(n)。
最优解的长度一定是在[1,n-numFriends]之间。
字符串在前缀都相同的情况下,长度越长越大。
C++版本:
class Solution {
public:string answerString(string word, int numFriends) {if(numFriends==1) return word;int n=word.size();string mx="";for(int i=0;i<n;i++){//substr(i,n) => [i,i+n)mx=max(mx,word.substr(i,min(n-(numFriends-1),n-i)));}return mx;}
};
JAVA版本:
class Solution {public String answerString(String word, int numFriends) {if(numFriends==1) return word;int n=word.length();String mx="";for(int i=0;i<n;i++){//substring(i,n) => [i,n)String tmp=word.substring(i,i+Math.min(n-i,n-(numFriends-1)));if(tmp.compareTo(mx)>0) mx=tmp;}return mx;}
}
Go版本:
func answerString(word string, numFriends int) string {if numFriends==1 {return word}n:=len(word)var mx string = ""for i:=0;i<n;i++ {// s[i:j] => [i,j)mx=max(mx,word[i:i+min(n-i,n-(numFriends-1))])}return mx;
}