leetcode 面试题 01.05.一次编辑

原题

https://leetcode-cn.com/problems/one-away-lcci/

题解

方法一

两字符串长度差最多差1,差1以上的话就至少需要修改两次了,直接返回假; 长度相同,字符串不用修改就相同的时候也算真;不同字符前后都相同的真,否则假; 长度first比second大1,先排较长的除末尾多一个字符的情况,如果仅仅是较长的末尾多了一个字符,则为真;其他时,忽略掉不同字符(假设长的里面的是多出来的),剩下的相同则真,否则为假。 本思路java代码示例:

/*
 *@v7fgg
 *执行用时 :2 ms, 在所有 Java 提交中击败了99.42%的用户
 *内存消耗 :39.9 MB, 在所有 Java 提交中击败了100.00%的用户
 *2020年6月18日 7:29
 */
class Solution {
          
   
    public boolean oneEditAway(String first, String second) {
          
   
        int x=first.length()-second.length();
        //长度差最多差1,差2的话就至少需要修改两次了,直接返回假
        if(x==0){
          
   
            //字符串不用修改就相同的时候也算真
            if(first.equals(second)){
          
   return true;}
            //不同字符前后都相同的真,否则假
            for(int i=0;i<first.length();i++){
          
   
                if(first.charAt(i)!=second.charAt(i)){
          
   
                    if(first.substring(i+1).equals(second.substring(i+1))){
          
   
                        return true;
                    }
                    else{
          
   return false;}
                }
            }
        }
        else if(x==1){
          
   
            //先排较长的除末尾多一个字符的情况
            if(second.equals(first.substring(0,second.length()))){
          
   return true;}
            //忽略掉不同字符(假设长的里面的是多出来的),剩下的相同则真
            for(int i=0;i<second.length();i++){
          
   
                if(first.charAt(i)!=second.charAt(i)){
          
   
                    if(first.substring(i+1).equals(second.substring(i))){
          
   
                        return true;
                    }
                    else{
          
   return false;}
                }
            }
        }
        else if(x==-1){
          
   
            //道理同x==1的情况
            if(first.equals(second.substring(0,first.length()))){
          
   return true;}
            for(int i=0;i<first.length();i++){
          
   
                if(first.charAt(i)!=second.charAt(i)){
          
   
                    if(first.substring(i).equals(second.substring(i+1))){
          
   
                        return true;
                    }
                    else{
          
   return false;}
                }
            }
        }
        return false;
    }
}
经验分享 程序员 微信小程序 职场和发展