Leetcode 161) One Edit Distance
in Algorithms
내 답안
- 예외를 생각하지 않아서 너무 많이 틀려버림. 예외가 너무 많았다. 문제 잘 읽고 생각한 후 푼다.
- 코드는 쉬운편이었는데, 예외가..
class Solution {
public boolean isOneEditDistance(String s, String t) {
int i=0;
if(s.equals(t)){
return false;
}
if(t.length() + s.length()==1 ){
return true;
}
if(t.length()==1 && s.length()==1){
return true;
}
while(i<=s.length() && i<=t.length()){
// s => add
String curs= s.substring(0,i);
String curt=t.substring(0,i);
if(!curs.equals(curt)){
return false;
}else{
//앞이 같고
//뒤에 하나 남았을 경우에
//삭제
if(i+1<=s.length()){
if(s.substring(i+1).equals(t.substring(i))){
return true;
}}
//더하기
if(i+1<=t.length()){
if(s.substring(i).equals(t.substring(i+1))){
return true;
}}
//대체하기
if(i+1<=t.length() && i+1<=s.length()){
if(s.substring(i+1).equals(t.substring(i+1))){
return true;
}
}
}
i++;
}
return false;
}
}
다른 답안
class Solution {
public boolean isOneEditDistance(String s, String t) {
int ns = s.length();
int nt = t.length();
if (ns > nt)
return isOneEditDistance(t, s);
if (nt - ns > 1 )
return false;
for (int i = 0; i < ns; i++) {
if (s.charAt(i) != t.charAt(i)) {
if (ns == nt) {
return s.substring(i + 1).equals(t.substring(i + 1));
} else
return s.substring(i).equals(t.substring(i + 1));
}
}
return (ns + 1 == nt);
}
}