题目: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;
}