【249天】我爱刷题系列(8)

编程挑战:解决复杂算法问题
本文通过四个具体的编程题目,介绍了如何利用不同的算法和技术来解决问题。包括如何使用有限数量的小砖和大砖拼接成特定长度的墙,找出字符串中连续出现次数最多的字符,寻找字符串两端的镜像部分,以及交替合并两个字符串。每个问题都提供了详细的解决方案。

叨叨两句

  1. 量变终于迎来了质变!破壁人系列中一个过去的问题终于得到了解答!
  2. 不但要练习,还要复习,总结思路!

题17:不同大小的两个值如何拼成一个限定的值

题目描述

书写一个类,类名为Itheima;

类中有一个方法,方法名makeBricks;

我们想做一排砖(长度自己定),我们有一些小砖(每块1英寸)和大砖(每块5英寸),
如果用我们选择的砖块的数量能够拼接成功,则返回true;否则返回false,
例如:makeBricks(3, 1, 8) → true
(尽量不使用循环,太耗费时间,会导致后台验证超时)

提示

方法调用期望值
makeBricks(3,1,8)true
makeBricks(3,1,9)false
makeBricks(3,2,10)true
public class Itheima {
    public boolean makeBricks(int a, int b, int c){
        //指定长度最多可使用的大砖数
        int max = c / 5;
        //拼接分两种情况:b >= max 则最多使用max  b < max 则使用b
        
        if(b >= max){
            //需求小砖数
            if(c - max * 5 <= a){
                return true;
            } else {
                return false;
            }
        } else {
            //需求小砖数
            if(c- b * 5 <= a){
                return true;
            } else {
                return false;
            }
        }
    }
}

题18:分拣思想+重置计数器+求一组数最大值

题目描述:

书写一个类,类名为Itheima;

类中有一个方法,方法名maxBlock;

给定一个字符串,返回该字符串中连续出现个数最多的字符的数量。

提示:

方法调用期望值
maxBlock("hoopla")2
maxBlock("abbCCCddBBBxx")3
maxBlock("")0
import java.util.HashMap;

public class Itheima {
    public int maxBlock(String str){
        int max = 0;//用于记录某个字符连续出现最大次数
        int count = 1;//用于作为中间变量,记录正在遍历的字符的个数
        HashMap<Character,Integer> map = new HashMap<>();//Key:字符 Value:最大连续出现次数
        for (int i = 0; i < str.length() - 1; i++) {
            char c1 = str.charAt(i);
            char c2 = str.charAt(i + 1);
            if(c1 == c2){
                count++;
                map.put(c1,count);
                if(count > max){
                    max = count;
                    map.put(c1, max);
                }
            } else {
                count = 1;
                map.put(c2,count);
            }
        }
        
        int totalMax = 0;
        for (Character c : map.keySet()) {
            if(map.get(c) >= totalMax){
                totalMax = map.get(c);
            }
        }
        
        return totalMax;
        
        
    }
}

题19:获取镜像元素

题目描述

书写一个类,类名为Itheima;

类中有一个方法,方法名mirrorEnds;

给定一个字符串,如果字符串的前串和后串有镜面关系,即返回前串作为方法的返回值,例如:字符串
"abxyzba"的前串"ab"与后串"ba"则为镜面关系,那么返回字符串"ab",如果前串和后串都是相同字符串
就原路返回,例如:"xxYxx"返回"xxYxx"。如果两者都不符合就返回空。

提示

方法调用期望值
mirrorEnds("abXYZba")"ab"
mirrorEnds("abca")"a"
mirrorEnds("aba")"aba"
public class Itheima {
    public String mirrorEnds(String str){
        String sumStr = "";
        for (int i = 0; i < str.length(); i++) {
            if(str.charAt(i) == str.charAt(str.length() - 1 - i)){
                sumStr = sumStr + str.charAt(i);
            }
            
            if(sumStr.length() != i + 1){
                break;
            }
        }
        
        if("".equals(sumStr)){
            return "";
        }
        
        if(sumStr.length() == 1){
            return sumStr;
        }
        
        boolean sumFlag = true;
        boolean flag = false;
        for (int i = 0; i < sumStr.length() - 1; i++) {
            if(sumStr.charAt(i) == sumStr.charAt(i + 1)){
                flag = true;
            }
            sumFlag = sumFlag && flag;
        }
        
        if(sumFlag){
            return str;
        } else {
            return sumStr;
        } 
        
    }
}

题20:轮流执行代码

题目描述

书写一个类,类名为Itheima;

类中有一个方法,方法名mixString;

给定两个字符串参数a和b,创建一个更大的字符串,由a的第一个字符,b的第一个字符,
a的第二个字符,b的第二个字符等组成。 任何剩余的字符在结果的末尾。
例如:"abc"和"xyz"返回的是:"axbycz".

提示

方法调用期望值
mixString("abc","xyz")"axbycz"
mixString("Hi","There")"HTihere"
mixString("xxxx","There")"xTxhxexre"
public class Itheima {
    public String mixString(String a,String b){
        String sumStr = "";
        int maxTimes = a.length() + b.length();
        if(a.length() >= b.length()){
            for(int i = 0; i < maxTimes; i++){
                if(i / 2 < b.length()){
                    if(i % 2 == 0){
                        sumStr = sumStr + a.charAt(i / 2);
                    } else {
                        sumStr = sumStr + b.charAt(i / 2);
                    }
                } else {
                    sumStr = sumStr + a.substring(b.length());
                    break;
                }
            }
        } else {
            for(int i = 0; i < maxTimes; i++){
                if(i / 2 < a.length()){
                    if(i % 2 == 0){
                            sumStr = sumStr + a.charAt(i / 2);
                    } else {
                            sumStr = sumStr + b.charAt(i / 2);
                    } 
                } else {
                    sumStr = sumStr + b.substring(a.length());
                    break;
                }
            }
        }
        return sumStr;
    }
}

该题的简单解法

public class Itheima {
    public String mixString(String a,String b){
        String sumStr = "";
        if(a.length() >= b.length()){
            String endStr = a.substring(b.length());
            for(int i = 0; i < b.length(); i++){
                sumStr += a.charAt(i) +"" + b.charAt(i);
            }
            sumStr += endStr;
        } else {
            String endStr = b.substring(a.length());
            for(int i = 0; i < a.length(); i++){
                sumStr += a.charAt(i) + "" + b.charAt(i);
            }
            sumStr += endStr;
            
        }
        return sumStr;
    }
}

题21:标记思想的典型运用

题目描述

书写一个类,类名为Itheima;

类中有一个方法,方法名only14;

给定一个整型数组,如果所有元素都是1和4或者其中之一,就返回true。

提示

方法调用期望值
only14([1,4,1,4])true
only14([1,4,2,4])false
only14([1,1])true
public class Itheima {
    public boolean only14(int[] arr){
        boolean sumFlag = true;
        boolean flag = false;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i] == 1 || arr[i] == 4){
                flag = true;
            } else {
                flag = false;
            }
            sumFlag = sumFlag && flag;
        }
        return sumFlag && flag;
    }
}
<think>好的,用户想找抖音上《我发明》系列使用的配乐名称。首先需要明确《我发明》是什么节目,可能涉及的音乐型。然后考虑在抖音上常用的配乐来源,可能是节目原声或流行音乐。 需要调用搜索工具,查找相关关键词,比如“抖音 我发明 背景音乐”、“我发明配乐名称”等。查看是否有用户讨论或官方信息。注意可能存在多个配乐的情况,不同片段使用不同音乐。 整合搜索结果,发现《我发明》常用背景音乐包括《HandClap》《Tassel》《Go Time》等。需要确认这些是否在抖音上被广泛使用。同时,用户可能需要区分节目原声和抖音用户自选的音乐,所以需要说明不同情况下的查找方法。 另外,提供识别音乐的方法,比如使用抖音的识别功能或第三方应用Shazam。步骤要简明,分点说明,避免使用顺序词汇。确保回答符合格式要求,公式和代码部分若有的话要正确标注,但此处可能不需要。最后生成相关问,需基于原问,如其他节目配乐、识别音乐方法、节目播出时间等。</think>《我发明》在抖音传播时常用配乐需根据具体视频内容判断。通过以下方式可精准识别配乐名称: **方法一:节目原声匹配** 《我发明》央视原版背景音乐多采用科技感电子音乐,部分片段使用《HandClap》(Fitz and The Tantrums乐队)或《Tassel》(Cymophane创作)等曲目。可对比原节目片头片尾音乐进行验证 **方法二:抖音音乐识别功能** 打开目标短视频,点击右下角旋转唱片图标进入音乐页面,查看“原声”标签显示的配乐名称。若被二次剪辑,需使用“Shazam”等第三方应用实时识别:启动Shazam后靠近音源,10秒内显示识别结果 **方法三:关键词组合搜索** 在抖音搜索框输入“我发明 背景音乐”“我发明BGM”等组合关键词,查看高赞视频评论区。创作者常会在置顶评论注明配乐信息,例如《Go Time》(Mark Petrie)常见于发明过程加速片段 ```python # 示例:使用ShazamAPI识别音频 import shazamio from shazamio import Shazam async def identify_music(file_path): shazam = Shazam() result = await shazam.recognize_song(file_path) return result['track']['title'] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值