【问题标题】:String rotation and anagram detection字符串旋转和字谜检测
【发布时间】:2019-11-20 06:54:49
【问题描述】:

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

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

解释:这里,旋转次数为 3。 应用第一次旋转 L 3 后,字符串为: 'deabc'。在这里,第一个字符是 'd' 应用第二次旋转 R 2 后,字符串为: '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”。我该如何解决这个问题?

【问题讨论】:

    标签: javascript string


    【解决方案1】:

    您的代码应该可以工作。

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

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

    我发现“没有重新加载代码”这个问题太常见了(至少对我来说)!

    【讨论】:

    • 是的,但它仅适用于这些参数。对于任何其他参数集,它只给出“NO”。
    猜你喜欢
    • 2016-06-24
    • 2017-04-27
    • 2021-10-10
    • 2021-12-12
    • 2011-09-11
    • 1970-01-01
    • 2016-05-23
    • 2015-12-23
    相关资源
    最近更新 更多