comments | difficulty | edit_url | tags | |||
---|---|---|---|---|---|---|
true |
中等 |
|
给你一个字符串 word
和一个整数 numFriends
。
Alice 正在为她的 numFriends
位朋友组织一个游戏。游戏分为多个回合,在每一回合中:
word
被分割成numFriends
个 非空 字符串,且该分割方式与之前的任意回合所采用的都 不完全相同 。- 所有分割出的字符串都会被放入一个盒子中。
在所有回合结束后,找出盒子中 字典序最大的 字符串。
示例 1:
输入: word = "dbca", numFriends = 2
输出: "dbc"
解释:
所有可能的分割方式为:
"d"
和"bca"
。"db"
和"ca"
。"dbc"
和"a"
。
示例 2:
输入: word = "gggg", numFriends = 4
输出: "g"
解释:
唯一可能的分割方式为:"g"
, "g"
, "g"
, 和 "g"
。
提示:
1 <= word.length <= 5 * 103
word
仅由小写英文字母组成。1 <= numFriends <= word.length
class Solution:
def answerString(self, word: str, numFriends: int) -> str:
if numFriends == 1:
return word
n = len(word)
ans = ""
for i in range(n):
k = min(n - i, n - numFriends + 1)
ans = max(ans, word[i : i + k])
return ans
class Solution {
public String answerString(String word, int numFriends) {
if (numFriends == 1) {
return word;
}
int n = word.length();
String ans = "";
for (int i = 0; i < n; ++i) {
int k = Math.min(n - i, n - numFriends + 1);
String t = word.substring(i, i + k);
if (ans.compareTo(t) < 0) {
ans = t;
}
}
return ans;
}
}
class Solution {
public:
string answerString(string word, int numFriends) {
if (numFriends == 1) {
return word;
}
int n = word.size();
string ans;
for (int i = 0; i < n; ++i) {
int k = min(n - i, n - numFriends + 1);
string t = word.substr(i, k);
ans = max(ans, t);
}
return ans;
}
};
func answerString(word string, numFriends int) (ans string) {
if numFriends == 1 {
return word
}
n := len(word)
for i := range word {
k := min(n-i, n-numFriends+1)
t := word[i : i+k]
ans = max(ans, t)
}
return
}
function answerString(word: string, numFriends: number): string {
if (numFriends === 1) {
return word;
}
let ans: string = '';
const n = word.length;
for (let i = 0; i < n; ++i) {
const k = Math.min(n - i, n - numFriends + 1);
const t = word.slice(i, i + k);
if (ans < t) {
ans = t;
}
}
return ans;
}