查找字符串数组是否可以链接成一个圆圈

问题描述 投票:0回答:1

我们有n个词。

我们想看看是否可以在桌子周围写下n个字符,这样我们就可以从这n个字符中的一个开始并顺时针移动来获得所有单词。

请注意,如果一个单词重复 m 次,则它必须在圆圈中恰好出现 m 次。

例如:

// Number of words - Number of letters in each word
3 3
abc
bca
cab

结果: abc

第二个例子:

4 2
aa
ab
ba
bb

结果: 阿布

我们期望找到一个长度为n的字符串,可以从它的一个字符开始顺时针旋转以获得所有单词。

string algorithm
1个回答
0
投票

暴力方法:

function findWord(words){
  words = words.match(/\S+/g);
  let r = words[0];
  for(let i=1;i<words.length;i++){
    const word = words[i];
    if((r + r).includes(word)) continue;
    for(const c of [...word].reverse()){
      while(!r.endsWith(word)) r += c;
    }
  }
  return r;
}

console.log(findWord('aa ab ba bb'));
console.log(findWord('abc bca cab'));

© www.soinside.com 2019 - 2024. All rights reserved.