• LeetCode 面试题 01.05. 一次编辑


    题目

    字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它们是否只需要一次(或者零次)编辑。

    示例 1:

    输入:
    first = "pale"
    second = "ple"
    输出: True

    示例 2:

    输入:
    first = "pales"
    second = "pal"
    输出: False

    思路

    对于是否满足题目要求的操作,分下面三种情况:
    1、first.len < second.len 只需要考虑 first加一个字符能否变成 second
    2、first.len = second.len 考虑 first和second是否只有一个或者0个字符不同,而如果是0个字符不同,其实就是 first=second
    3、first.len > second.len 把second和first换一个位置,其实就是情况1

    故,其实真实的判断就只要写两种,一种是两者长度相等的时候,判断first和second之前是否相差一个字符,另一种是判断短的字符串first加一个字符后能否变成second。

    AC代码

    点击查看代码
    class Solution {
        public boolean oneEditAway(String first, String second) {
            if( first.equals(second) ) {
                return true;
            }
            int lenF = first.length();
            int lenS = second.length();
            if( lenF>lenS ) {
                return oneEditAway(second, first);
            } else if( lenF == lenS ) {
                int cnt = 0;
                for(int i=0; i<lenF; i++) {
                    if( first.charAt(i)!=second.charAt(i)) {
                        cnt ++;
                    }
                }
                return cnt == 1;
            } else {
                int cnt = 0;
                StringBuffer sbF = new StringBuffer(first);
                for(int i=0; i<lenF; i++) {
                    if(first.charAt(i)!=second.charAt(i) ) {
                        cnt ++;
                        sbF.insert(i, second.charAt(i));
                        break;
                    }
                }
                // 坑点数据: "a"、"ab" 或者 ""、"a"
                if( cnt == 0) {
                    return lenS-lenF==1;
                }
                return second.equals(sbF.toString());
            }
        }
    }
    
  • 相关阅读:
    Nginx安装
    node.js搭建vue脚手架
    Oracle引入数据
    MVC引入Junit单元测试
    Git版本控制器
    IDEA-Maven
    SSM框架整合
    【测试基础第五篇】测试用例编写和评审
    【测试基础第四篇】测试用例设计方法
    【测试基础第三篇】需求测试分析
  • 原文地址:https://www.cnblogs.com/Asimple/p/16268699.html
Copyright © 2020-2023  润新知