【发布时间】:2020-02-02 17:37:04
【问题描述】:
给定一个字符串数组。字符串具有相同的长度。假设输入数组是 (["ababc", "abbba", "aaabb", "bcccb", "acbbb", "aaabb"])。
a b a b c
a b b b a
a a a b b
b c c c b
a c b b b
a a a b b
问题是关于找到最小连接的字母组,可以为同一个字母垂直和水平绘制草图,但不能对角线。对于此示例,字母“a”有 4 个组(两个单组,两个多组), 2组字母“b”(一个单,一个多)和2组字母“c”(一个单,一个多)。所以,输出应该是“8”。我找不到使用 JavaScript 的解决方案。
我尝试将其视为单独的行和列。此外,为每个字符创建数组并单独分析。但它们都不能正常工作。
function strokesRequired(picture){
let total = picture.join('');
let strLength = picture[0].length;
let counter = 0;
for(let i = 0; i < total.length; i++){
if(total[i] !== total[i+1] || total[i] !== total[i+strLength] || total[i] !== total[i-1] || total[i] !== total[i-strLength]){
continue;
}
else {
counter++;
}
}
return counter;
}
我的代码针对这个问题返回 4,但应该返回 8。因为我只计算字母没有任何水平和垂直匹配。
【问题讨论】:
-
这闻起来像作业
-
你的例子中的笔画是什么?为什么应该是 8 而不是 4?
-
你的输出应该是
8? -
为了清楚起见,我已经编辑了这个问题。我希望我能以正确的方式问它
-
“问题在于找到所需的最少图纸,可以垂直和水平地绘制相同字母的草图,但不能绘制对角线。”还是不清楚。这个测试用例的输出 8 怎么样。 ?
标签: javascript algorithm