1189. “气球” 的最大数量

image.png

模拟,桶

  1. class Solution {
  2. public int maxNumberOfBalloons(String text) {
  3. int [] bucket = new int [26];
  4. for(char c : text.toCharArray() ) {
  5. bucket[c - 'a'] ++;
  6. }
  7. int res = Integer.MAX_VALUE;
  8. if(bucket['l' - 'a'] % 2 == 0 ) {
  9. bucket['l' - 'a'] = bucket['l' - 'a'] / 2;
  10. } else {
  11. bucket['l' - 'a'] = ( bucket['l' - 'a' ] - 1) / 2;
  12. }
  13. if(bucket['o' - 'a'] % 2 == 0 ) {
  14. bucket['o' - 'a'] = bucket['o' - 'a'] / 2;
  15. } else {
  16. bucket['o' - 'a'] = (bucket['o' - 'a' ] - 1 ) / 2;
  17. }
  18. //a,b,l,o,n
  19. /**
  20. * balloon
  21. * l - a: 11
  22. * o - a: 14
  23. * n - a: 13
  24. */
  25. res = Math.min(res, bucket[0]);
  26. res = Math.min(res, bucket[1]);
  27. res = Math.min(res, bucket['l' - 'a']);
  28. res = Math.min(res, bucket['o' - 'a']);
  29. return Math.min(res, bucket['n' - 'a']);
  30. }
  31. }

优化代码

  1. class Solution {
  2. public int maxNumberOfBalloons(String text) {
  3. int [] bucket = new int [5];
  4. for(char c : text.toCharArray() ) {
  5. if('a' == c ) bucket[0] ++;
  6. else if( 'b' == c ) bucket[1] ++;
  7. else if( 'l' == c ) bucket[2] ++;
  8. else if( 'n' == c ) bucket[3] ++;
  9. else if( 'o' == c ) bucket[4] ++;
  10. }
  11. //l o 除以2
  12. bucket[2] /= 2;
  13. bucket[4] /= 2;
  14. int ans = Integer.MAX_VALUE;
  15. for(int i = 0; i < 5; i++ ) {
  16. ans = Math.min(ans,bucket[i]);
  17. }
  18. return ans;
  19. }
  20. }