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;
}
}
上一篇:
IDEA上Java项目控制台中文乱码
