当前位置: 首页 > article >正文

最少前缀操作问题--感受不到动态规划,怎么办怎么办

题目:

标签:动态规划(应该是双指针的,不理解)

小U和小R有两个字符串,分别是S和T,现在小U需要通过对S进行若干次操作,使其变成T的一个前缀。操作可以是修改S的某一个字符,或者删除S末尾的字符。现在你需要帮助小U计算出,最少需要多少次操作才能让S变成T的前缀。


测试样例

样例1:

输入:S = "aba", T = "abb"
输出:1

样例2:

输入:S = "abcd", T = "efg"
输出:4

样例3:

输入:S = "xyz", T = "xy"
输出:1

样例4:

输入:S = "hello", T = "helloworld"
输出:0

样例5:

输入:S = "same", T = "same"
输出:0


不行,感觉我的脑子废了,第一遍是用动态规划解决该问题,但是!wrong!参考了下那个Al的想法是了下,感觉我的智商堪忧,这个怎么也不是动态规划的题解。

public class Main {
    public static int solution(String S, String T) {
        //最少的前缀操作次数,说实话,做了这道题目感受不到一点动态规划的感觉

        int deleteCount = 0;
        if(S.length() > T.length()){
            deleteCount = S.length() -  T.length();
        }
        
        int i = 0;
        int j = 0;
        int count = 0;

        while(i < Math.min(S.length(),T.length())){
            if(S.charAt(i) != T.charAt(j)){
                count ++;
            }
            i++;
            j++;
        }
        return count + deleteCount;
    }

    public static void main(String[] args) {
        System.out.println(solution("aba", "abb") == 1);
        System.out.println(solution("abcd", "efg") == 4);
        System.out.println(solution("xyz", "xy") == 1);
        System.out.println(solution("hello", "helloworld") == 0);
        System.out.println(solution("same", "same") == 0);
    }
}

http://www.kler.cn/a/401930.html

相关文章:

  • Vue3 虚拟列表组件库 virtual-list-vue3 的使用
  • Kotlin的data class
  • 《设计模式》创建型模式总结
  • 详细分析ipvsadm负载均衡的命令
  • 环形缓冲区 之 STM32 串口接收的实现
  • 【鸿蒙生态崛起,开发者有哪些机遇与挑战?】HarmonyOS NEXT 引领数字化未来
  • 动态Tab导航
  • STM32G4的数模转换器(DAC)功能介绍
  • Linux-shell实例手册-服务操作
  • 基于YOLOv8深度学习的智慧农业猪行为检测系统研究与实现(PyQt5界面+数据集+训练代码)
  • SpringSecurity+jwt+captcha登录认证授权总结
  • ARM CCA机密计算安全模型之简介
  • 网络IPC:套接字汇总整理
  • 2411rust,编译时自动检查配置
  • 贴代码框架PasteForm特性介绍之select,selects,lselect和reload
  • Python入门(9)--类与对象基础
  • 30. 并发编程
  • Go 编译代码-分平台编译
  • Kubernetes配置管理ConfigMap、Secret
  • 51单片机基础01 单片机最小系统
  • freemarker 读取template.xml ,通过response 输出文件,解决中文乱码问题
  • 【大选】2024年美国总统选举数据分析可视化
  • HbuilderX的使用
  • 从零开始学习JVM(九)- 垃圾收集器
  • 【逐行注释】MATLAB的EKF和UKF例程与详细注释|附下载链接
  • LDR6500:C to DP与DP to C视频转接线双向方案