javascript - 字符串旋转和字谜检测

标签 javascript string

我正在解决一个练习问题,我的代码应接受两个参数(str1,str2)并根据str2str1应用旋转>。每次应用旋转后,旋转字符串的第一个字母应添加到新字符串中。在所有旋转之后,如果新字符串是原始字符串的任何子字符串的字谜,代码应返回“YES”,否则应返回“NO”。

例如,如果参数如下:("abcde","L 3 R 2 R 4") 输出将为 YES

说明:此处,旋转次数为 3。 应用第一次旋转 L 3 后,字符串为: 'deabc'。这里,第一个字符是“d” 应用第二次旋转 R2 后,字符串为: 'bcdea'。这里,第一个字符是“b” 应用第三次旋转 R 4 后,字符串为: 'cdeab'。这里,第一个字符是“c”

因此,在所有旋转之后,新字符串将是“dbc”,它是原始字符串“abcde”的子字符串的字谜。

function anagram(str1,str2){
  var i=0 , j = 2 , temp = [] , final = [] , input = str1;

  while(j<str2.length){
    if(str2[i]==='L'){        //left rotation
      for(let k=input.length-parseInt(str2[j])+1 ; k<input.length ; k++){
        temp.push(input[k]);
        }
        for(let l=0 ; l<input.length-parseInt(str2[j])+1; l++){
          temp.push(input[l]);
          }
          final.push(temp[0]);
      }

    if(str2[i]==='R'){       //right rotation
      for(let m=input.length-parseInt(str2[j]) ; m<input.length; m++){
        temp.push(input[m]);
        }
        for(let n=0 ; n< input.length-parseInt(str2[j]); n++){
          temp.push(input[n]);
          }
          final.push(temp[0]);
      }
    input = temp ;
    temp = [];
    i += 4;
    j += 4;
    }

    var a=0, b=final.length-1 ;                 //anagram detection
    while(b<str1.length){
      if(str1.slice(a,b+1).split('').sort().join('')===final.sort().join('')){
        return "YES"}
      a++;
      b++;
      }
      return "NO";
  }

代码仅返回“NO”。我该如何解决这个问题?

最佳答案

您的代码应该可以工作。

我只是将提供的代码复制/粘贴到新文件中。调用 anagram("abcde", "L 3 R 2 R 4") 返回 YES。确保检查所有常规内容:

  • 您保存文件了吗?
  • 如果您从浏览器运行代码,您是否刷新了页面?如果这样做了,您需要清除缓存吗?
  • 一般来说,请确保您正在运行最新的代码:如果您将 console.log("TEST"); 放在函数的开头,那么当您运行代码时它会打印出来吗?像这样的调试语句是救星。

我发现“没有重新加载代码”是一个非常常见的问题(至少对我来说)!

关于javascript - 字符串旋转和字谜检测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56974212/

相关文章:

javascript - 单击按钮更改div

javascript - 类型错误 : Cannot read properties of undefined (reading 'document' )

python - 将匹配的子字符串从列表中提取到 Python 中的新列表

JavaScript:如何在一行中将名字简化为首字母?

c# - 从字符串中获取矩形边界

javascript - jQuery:div中两个位置之间有多少个元素

javascript - Canvas - 元素在 ThresholdFilter 后消失

c++ - C++中的字符串处理

java:替换 "with\"

javascript - 从 Angular Material 实现 $md-sidenav 时出现错误