首页 > 解决方案 > 如何使用特定字符的索引搜索特定单词的索引

问题描述

比如说我有下面的话

THIS TEXT IS A SAMPLE TEXT

我的字符索引为 7。

然后,当我将句子拆分为单词时,我必须返回索引 1,这是包含字符索引的单词的索引,而不是 5,它与构成字符索引的单词完全匹配,但与字符所在的正确索引不匹配。

基本上我正在尝试使用字符索引(当与字符分割时)返回字符所在位置的正确单词索引(当拆分为单词时)

我想我会用类似下面的东西来重建这个词,以在字符处找到这个词

let curString = 'find a word from here';
let initialPositin = 5
let position = initialPositin

let stringBuilder = '';

while(position > -1 && curString.charAt(position) !== ' '){
  console.log('run 1')
  console.log(position);

  stringBuilder = curString.charAt(position) + stringBuilder;

  position --;
}

console.log(stringBuilder)

position = initialPositin + 1;

while(position < curString.length && curString.charAt(position) !== ' '){
  console.log('run 2')

  stringBuilder += curString.charAt(position);

  position ++;
}

console.log(stringBuilder);

然后将句子拆分为单词,然后找到包含我构建的单词的单词的所有索引。然后遍历所有找到的单词,并重构之前的单词,看看重构中目标字符的索引是否与给定的字符位置匹配。

确实感觉效率不高。有没有人有更好的建议?

我更喜欢 javascript,但我可以尝试自己翻译任何其他语言

标签: javascriptalgorithmsearch

解决方案


我认为您可以只计算给定索引之前出现的空格,例如

let curString = 'find a word from here';
let givenIndex = 9;

let spaceIndex = 0;
for (var i = 0; i < curString.length; i++) {
  if(curString.charAt(i) == ' ') {
      if (i < givenIndex) {
          spaceIndex++;
      } else {
          // found what we need
          console.log(spaceIndex);
      }
  }
}

推荐阅读