Algorithm
一次编辑
class Solution {
public boolean oneEditAway(String first, String second) {
if (first == null || second == null) {
return true;
}
if (Math.abs(first.length() - second.length()) > 1) {
return false;
}
if (first.equals("") || second.equals("")) {
return true;
}
boolean lengthIsEqual = false;
if (first.length() == second.length()) {
lengthIsEqual = true;
}
String longStr = "";
String shortStr = "";
if (first.length() > second.length()) {
longStr = first;
shortStr = second;
} else {
longStr = second;
shortStr = first;
}
StringBuilder longSb = new StringBuilder(longStr);
StringBuilder shortSb = new StringBuilder(shortStr);
int calcLength = 0;
if (lengthIsEqual) {
calcLength = longStr.length();
} else {
calcLength = shortStr.length();
}
for (int i = 0; i < calcLength; i++) {
if (first.charAt(i) != second.charAt(i)) {
if (lengthIsEqual) {
return longSb.deleteCharAt(i).toString().equals(shortSb.deleteCharAt(i).toString());
} else {
return longSb.deleteCharAt(i).toString().equals(shortSb.toString());
}
}
}
return true;
}
}
Review
5 Common Kotlin Coroutines interview questions
Tip
本周看 Kotlin 协程源码发现两个关键字,expect 和 actual。expect 只是一个接口,想看具体实现需要找一下 actual 声明的方法,简单了解下这两个关键字。
在 Kotlin 中,"expect" 和 "actual" 是一对关键字,用于实现多平台的代码共享和交互。
"expect" 关键字用于定义一个抽象的期望声明,它只提供了声明的 API,但没有具体的实现。这意味着它只是一个接口,没有具体的实现代码。
"actual" 关键字用于提供特定平台上的实际实现。也就是说,它提供了实现代码,用于与期望声明进行匹配。
通过使用这对关键字,开发者可以编写一个期望声明,然后在不同的平台上提供不同的实现。例如,可以编写一个期望声明,定义一个跨平台的网络客户端,然后在 Android 和 iOS 平台上分别提供不同的实现。
Share
本周还是主要回顾学习《深入理解 Kotlin 协程》第三章还有部分第五章。