插: 前些天發(fā)現(xiàn)了一個(gè)巨牛的人工智能學(xué)習(xí)網(wǎng)站渠啤,通俗易懂逛犹,風(fēng)趣幽默,忍不住分享一下給大家次企。點(diǎn)擊跳轉(zhuǎn)到網(wǎng)站。
堅(jiān)持不懈潜圃,越努力越幸運(yùn)缸棵,大家一起學(xué)習(xí)鴨~~~
給你兩個(gè)下標(biāo)從 0 開(kāi)始的字符串 s 和 target 。你可以從 s 取出一些字符并將其重排谭期,得到若干新的字符串堵第。
從 s 中取出字符并重新排列,返回可以形成 target 的 最大 副本數(shù)隧出。
示例 1:
輸入:s = "ilovecodingonleetcode", target = "code"
輸出:2
解釋:
對(duì)于 "code" 的第 1 個(gè)副本型诚,選取下標(biāo)為 4 、5 鸳劳、6 和 7 的字符狰贯。
對(duì)于 "code" 的第 2 個(gè)副本,選取下標(biāo)為 17 赏廓、18 涵紊、19 和 20 的字符。
形成的字符串分別是 "ecod" 和 "code" 幔摸,都可以重排為 "code" 摸柄。
可以形成最多 2 個(gè) "code" 的副本,所以返回 2 既忆。
示例 2:
輸入:s = "abcba", target = "abc"
輸出:1
解釋:
選取下標(biāo)為 0 驱负、1 和 2 的字符,可以形成 "abc" 的 1 個(gè)副本患雇。
可以形成最多 1 個(gè) "abc" 的副本跃脊,所以返回 1 。
注意苛吱,盡管下標(biāo) 3 和 4 分別有額外的 'a' 和 'b' 酪术,但不能重用下標(biāo) 2 處的 'c' ,所以無(wú)法形成 "abc" 的第 2 個(gè)副本。
示例 3:
輸入:s = "abbaccaddaeea", target = "aaaaa"
輸出:1
解釋:
選取下標(biāo)為 0 绘雁、3 橡疼、6 、9 和 12 的字符庐舟,可以形成 "aaaaa" 的 1 個(gè)副本欣除。
可以形成最多 1 個(gè) "aaaaa" 的副本,所以返回 1 挪略。
提示:
1 <= s.length <= 100
1 <= target.length <= 10
s 和 target 由小寫(xiě)英文字母組成
java代碼:
class Solution {
public int rearrangeCharacters(String s, String target) {
int[] ch = new int[26];
for (int i = 0; i < s.length(); i++) {
ch[s.charAt(i) - 'a']++;
}
int res = 0;
char[] t = target.toCharArray();
while (true) {
for (char c : t) {
ch[c - 'a']--;
if (ch[c - 'a'] < 0) {
return res;
}
}
res++;
}
}
}