【发布时间】:2020-04-02 17:17:39
【问题描述】:
如果我在 word1 中合并 2 个相邻的重复字符,我想检查是否可以从 word1 生成 word2。
例如:
word1 = 'peete'
word2 = 'pete' //OK, because merging ee into e in word1 produces word2
word1 = 'peetee'
word2 = 'peete'
word1 = 'meet'
word2 = 'met'
到目前为止我有这个,但它因一些输入而失败:
let checkMerge = (word1, word2) => {
let charArr = word1.split('');
let resultArr = [];
let needToMerge = '';
for (let i = 0; i < charArr.length; ++i) {
if (charArr[i] == charArr[i + 1]) continue
resultArr.push(charArr[i]);
}
let resultWord = resultArr.join('');
if (resultWord == word2) {
console.log(`JOIN ${needToMerge}`);
} else {
console.log(`something's wrong`)
}
}
checkMerge('peete', 'pete'); //correct
checkMerge('peetee', 'peete'); //fails
checkMerge('meet', 'met'); //correct
我还必须得到我需要合并的角色 (let needToMerge = '';),但我做错了。所以最终的输出应该是这样的:'JOIN char'我应该做些什么不同的?谢谢你。
编辑:
更多说明:
function checkMerge 有两个词,word1 和 word2。我必须检查是否可以通过最多一次合并从word1 获得word2。 word2 不能修改,只能通过一次合并修改 word1。
如果word2 可以通过合并word1 中的两个相邻字符从word1 生成,则该函数应返回"JOIN c"(只执行一次合并)。
例如:
给定word1 = 'peetee' 和word2 = 'peete',函数应该返回'JOIN e',因为如果我们合并word1 的最后两个字符(ee),我们会得到'peete',它等于word2。
给定word1 = 'peetee'和word2 = 'petee',函数应该返回'JOIN e',因为如果我们合并word1的第一个重复字符(ee),我们得到'petee'等于word2 .
【问题讨论】:
-
好吧,你永远不会更新
needToMerge,我猜当if循环中的if条件评估为真时charArr[i]? -
是的,我试过 needToMerge = charArr[i] 但有时它写错了字符。
-
如果您有兴趣,这里有一个清理后的版本:pastebin.com/nCyEq49D
标签: javascript arrays string function