解:
class Solution {
private int[] cnt(String str) {
int[] cnt = new int[2];
for(char c : str.toCharArray()) {
if(c == '0') {
cnt[0] ++;
} else {
cnt[1]++;
}
}
return cnt;
}
public int findMaxForm(String[] strs, int m, int n) {
int len = strs.length;
int[][] f = new int[m+1][n+1];
for(int i = 0; i < len; i++) {
int[] ret = cnt(strs[i]);
for(int j=m; j>=ret[0]; j--) {
for(int k=n; k>=ret[1]; k--) {
f[j][k] = Math.max(f[j][k], f[j-ret[0]][k-ret[1]]+1);
}
}
}
return f[m][n];
}
}