Leetcode-面试题 01.05 一次编辑

面试题 01.05. 一次编辑

解题思路

1.判断两个字符串长度
如果大于1,则return false
如果两个字符串内容相等,则return true
如果两个字符串中有一个长度为0,则return true
2.如果字符串长度相等,则判断不等的字符是否仅有一个,并且位置相同
3.如果字符串长度不等,则判断将长字符串多余的字符去除,然后判断两个字符串是否完全相等

解题遇到的问题

1.字符串长度不等时,如何判断,如果只是通过长度,容易出现数组越界
2.字符串长度不等时,有一个字符串为空,需要提前处理掉
3.字符串长度做减法时,未取绝对值

后续需要总结学习的知识点

1.执行用时上,需要优化

##解法1
public class Main {
    public static boolean oneEditAway(String first, String second) {
        if (Math.abs(first.length() - second.length()) > 1) {
            return false;
        }

        if (first.equals(second) || first.length() == 0 || second.length() == 0
                || first.contains(second) || second.contains(first)) {
            return true;
        }

        if (first.length() == second.length()) {
            return isOnlyOneForEquals(first, second);
        } else {
            if (first.length() > second.length()) {
                return isContain(first, second);
            } else {
                return isContain(second, first);
            }
        }
    }

    public static boolean isContain(String longs, String shorts) {
        char[] cs1 = longs.toCharArray();
        char[] cs2 = shorts.toCharArray();
        for (int i = 0; i < cs2.length; i++) {
            if (cs1[i] != cs2[i]) {
                longs = longs.substring(0, i) + longs.substring(i + 1);
                break;
            }
        }
        return longs.equals(shorts);
    }
    public static boolean isOnlyOneForEquals(String first, String second) {
        int nums = 0;
        char[] cs1 = first.toCharArray();
        char[] cs2 = second.toCharArray();

        for (int i = 0; i < cs1.length; i++) {
            if (cs1[i] != cs2[i]) {
                nums++;
            }
        }
        return nums <= 1;
    }
}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 面试题 01.06. 字符串压缩[https://leetcode-cn.com/problems/compres...
    itbird01阅读 1,720评论 0 0
  • 一.题目: 字符串有三种编辑操作:插入一个字符、删除一个字符或者替换一个字符。 给定两个字符串,编写一个函数判定它...
    Movle阅读 1,319评论 0 1
  • Java 基础篇 Java 有哪些特点 并发性的:你可以在其中执行许多语句,而不必一次执行它 面向对象的:基于类和...
    maozexijr阅读 3,535评论 0 0
  • 一、Java 基础 1.JDK 和 JRE 有什么区别? 答:JRE: Java Runtime Environm...
    MangoT阅读 3,173评论 0 0
  • 注:都是在百度搜索整理的答案,如有侵权和错误,希告知更改。 一、哪些情况下的对象会被垃圾回收机制处理掉  当对象对...
    Jenchar阅读 8,451评论 3 2

友情链接更多精彩内容