22 lines
1.1 KiB
Markdown
22 lines
1.1 KiB
Markdown
Leetcode #161 | #Medium | [[Два указателя]]
|
|
## Идея
|
|
Если длины различаются больше чем на один сразу false, за s берем меньшую строку, идем for'ом до первого несовпадающего символа, если длины равны, то хвосты с i должны быть идентичны, если длины не равны, то у меньшей с i а у большей с i+1 должны быть равны
|
|
## [[Big-O]]
|
|
- Время ```O(N)```
|
|
- Память ```O(1)```
|
|
## Код
|
|
```Java
|
|
public class Solution {
|
|
public boolean isOneEditDistance(String s, String t) {
|
|
if (Math.abs(s.length() - t.length()) > 1) return false;
|
|
if (s.length() > t.length()) return isOneEditDistance(t, s);
|
|
for (int i = 0; i < s.length(); i++) {
|
|
if (s.charAt(i) != t.charAt(i)) {
|
|
if (s.length() == t.length()) return s.substring(i + 1).equals(t.substring(i + 1));
|
|
else return s.substring(i).equals(t.substring(i + 1));
|
|
}
|
|
}
|
|
return s.length() + 1 == t.length();
|
|
}
|
|
}
|
|
``` |