模拟,桶
class Solution { public int maxNumberOfBalloons(String text) { int [] bucket = new int [26]; for(char c : text.toCharArray() ) { bucket[c - 'a'] ++; } int res = Integer.MAX_VALUE; if(bucket['l' - 'a'] % 2 == 0 ) { bucket['l' - 'a'] = bucket['l' - 'a'] / 2; } else { bucket['l' - 'a'] = ( bucket['l' - 'a' ] - 1) / 2; } if(bucket['o' - 'a'] % 2 == 0 ) { bucket['o' - 'a'] = bucket['o' - 'a'] / 2; } else { bucket['o' - 'a'] = (bucket['o' - 'a' ] - 1 ) / 2; } //a,b,l,o,n /** * balloon * l - a: 11 * o - a: 14 * n - a: 13 */ res = Math.min(res, bucket[0]); res = Math.min(res, bucket[1]); res = Math.min(res, bucket['l' - 'a']); res = Math.min(res, bucket['o' - 'a']); return Math.min(res, bucket['n' - 'a']); }}
优化代码
class Solution { public int maxNumberOfBalloons(String text) { int [] bucket = new int [5]; for(char c : text.toCharArray() ) { if('a' == c ) bucket[0] ++; else if( 'b' == c ) bucket[1] ++; else if( 'l' == c ) bucket[2] ++; else if( 'n' == c ) bucket[3] ++; else if( 'o' == c ) bucket[4] ++; } //l o 除以2 bucket[2] /= 2; bucket[4] /= 2; int ans = Integer.MAX_VALUE; for(int i = 0; i < 5; i++ ) { ans = Math.min(ans,bucket[i]); } return ans; }}