题目来源:
leetcode题目,网址:1880. 检查某单词是否等于两单词之和 - 力扣(LeetCode)
解题思路:
模拟加法,判断对应位置字符是否相等,最后判断前缀 'a' 是否符合规则。
解题代码:
class Solution {
public boolean isSumEqual(String firstWord, String secondWord, String targetWord) {
int carryBit=0;
int i=firstWord.length()-1;
int j=secondWord.length()-1;
int k=targetWord.length()-1;
while(i>=0 || j>=0){
int temp=carryBit;
if(i>=0){
temp+=firstWord.charAt(i)-'a';
}
if(j>=0){
temp+=secondWord.charAt(j)-'a';
}
carryBit=temp/10;
temp=temp%10;
if(k<0){
if(carryBit!=0 || temp!=0){
return false;
}
i--;
while(i>=0 && firstWord.charAt(i)=='a'){
i--;
}
j--;
while(j>=0 && secondWord.charAt(j)=='a'){
j--;
}
if(i>=0 || j>=0){
return false;
}
break;
}
if(targetWord.charAt(k)!=(char)(temp+'a')){
return false;
}
i--;
j--;
k--;
}
if(carryBit>0){
if(k<0){
return false;
}else if(targetWord.charAt(k)!='b'){
return false;
}
k--;
}
while(k>=0){
if(targetWord.charAt(k)!='a'){
return false;
}
k--;
}
return true;
}
}
总结:
代码很丑,舍去前缀 'a' 的操作应该是在求和前进行而不是最后判断。
官方题解是将三个字符串转化为对应整数后,判断前两者的和是否与最后一个相等。
concatenation n.一系列互相关联的事务