青训营简单题打卡1 | 豆包MarsCode AI刷题

114 阅读3分钟

组成字符串ku的最大次数 问题描述: 给定一个字符串 𝑠s,该字符串中只包含英文大小写字母。你需要计算从字符串中最多能组成多少个字符串 "ku"。每次可以随机从字符串中选一个字符,并且选中的字符不能再使用。字符串中的字符大小写可以忽略,即大写和小写字母视为相同。 例如,输入 "AUBTMKAxfuu",从中最多能组成 1 个 "ku"

思路:直接遍历字符串,分别统计 出现k或K的次数 和 出现u或U的次数 取两者中的最小值即可

小U的数字插入问题 问题描述: *小U手中有两个数字 a 和 b。第一个数字是一个任意的正整数,而第二个数字是一个非负整数。她的任务是将第二个数字 b 插入到第一个数字 a 的某个位置,以形成一个最大的可能数字。你需要帮助小U找到这个插入位置,输出插入后的最大结果。 样例1:

输入:a = 76543, b = 4
输出:765443*

涉及知识点: 1、数字与字符串的转换 转成字符串:to_string() 转成数字:stoi() 2、字符串插入——函数s.insert() 使用方法: insert(i,string)//i指字符串插入后第一个字符所在的位置,想要插入的位置 ,string是指我们想要插入的字符串 3、字符串大小比较 对于单个字母: 小写字母 > 大写字母 对于单个数字: 按照数学比大小规则 对于字符串:从首字符开始比较,当遍历到下标相同但大小不同的字符时,较大字符所在的字符串更大 如:abc > abbb > ABBB

思路 : 将原字符串存储到 temp 中,遍历 temp 字符串的各个位置,尝试将字符插入到各个位置 比较插入后得到的每个字符串的大小

  string s=to_string(a);
  string s1=to_string(b);
  int len=s.length();
  string maxx=s;
  for(int i=0;i<=len;i++){
      string temp=s;
      temp=temp.insert(i,s1);
      if(temp>=maxx){
          maxx=temp;
      }
  }
  return stoi(maxx);

小D的‘abc’变换问题

问题描述: *小D拿到了一个仅由 "abc" 三种字母组成的字符串。她每次操作会对所有字符同时进行以下变换:

  • 将 'a' 变成 'bc'
  • 将 'b' 变成 'ca'
  • 将 'c' 变成 'ab' 小D将重复该操作 k 次。你的任务是输出经过 k 次变换后,得到的最终字符串。 例如:对于初始字符串 "abc",执行 2 次操作后,字符串将变为 "caababbcbcca"

思路:进行k次循环(while),每一次循环遍历一次字符串,并用s1存储新的字符串,按题目要求,遇到字符‘a’就s1+"bc" 遇到字符‘b’就s1+"ca" 遇到字符‘c’就s1+"ab" 将s1赋给s 循环结束后 返回s即可

以上叙述若有疑惑,欢迎友友指出~