练习题

76 阅读1分钟

一、求最大篮球单词数

给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "basketball"(篮球)。 字符串 text 中的每个字母最多只能被使用一次。请你返回最多可以拼凑出多少个单词 "basketball"。  

示例 1: 输入:text = "saltaebbolko" 输出:1

示例 2: 输入:text = "saltaebbolkoxballketsba" 输出:2

示例 3: 输入:text = "english" 输出:0  

提示: 1 <= text.length <= 10^4 text 全部由小写英文字母组成

using System;
namespace baskertball
{
    
         class Solution
        {
        static void Main(string[] args)
        {

            string text = Convert.ToString(Console.ReadLine());
            char[] chars = text.ToCharArray();
            /*for (int i = 0; i < chars.Length; i++)
            {
                Console.WriteLine(chars[i]);
            }*/
            int blen = 0;
            int alen = 0;
            int clen = 0;
            int klen = 0;
            int elen = 0;
            int tlen = 0;
            int llen = 0;
            for (int i = 0; i < text.Length; i++)
            {
                char des = chars[i];
                switch (des)
                {
                    case 'b':
                        blen++;
                        break;
                    case 'a':
                        alen++;
                        break;
                    case 'c':
                        clen++;
                        break;
                    case 'k':
                        klen++;
                        break;
                    case 'e':
                        elen++;
                        break;
                    case 't':
                        tlen++;
                        break;
                    case 'l':
                        llen++;
                        break;
                    default:
                        break;
                }
            }
            //return Math.Min(Math.Min)
            int j = Math.Min(Math.Min(Math.Min(Math.Min(blen, alen) /2,Math.Min(clen, klen)), Math.Min( elen,tlen)), llen / 2);
            Console.WriteLine("最多可以组成{0}个单词", j);
        }
    }
  }

//求最大篮球的单词数 backetball

//输入一个字符串 判断里面单词数 a b e k l s t 取里面次数最小的 用数组来收集

//假设a是下标0 以此类推 b下标是1, 出现两次的字母有 a l b 算的时候要除以2

            string str = Console.ReadLine();
             int[] numArray = new int[7];
             for(int i=0;i<str.Length;i++)
             {
                 if (str[i]=='a')
                 {
                     numArray[0] += 1;
                 }
                 else if (str[i]=='b')
                 {
                     numArray[1]++;
                 }else if (str[i]=='e')
                 {
                     numArray[2]++;
                 }else if (str[i]=='k')
                 {
                     numArray[3]++;
                 }else if (str[i]=='l')
                 {
                     numArray[4]++;
                 }else if (str[i]=='s')
                 {
                     numArray[5]++;
                 }else if (str[i]=='t')
                 {
                     numArray[6]++;
                 }
             }
             numArray[0] /=2;
             numArray[4] /=2;
             numArray[1] /=2;
             Console.WriteLine(numArray.Min());