首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >爱字串旋转公司试题库测试用例通过,隐藏测试失败

爱字串旋转公司试题库测试用例通过,隐藏测试失败
EN

Stack Overflow用户
提问于 2021-01-19 00:35:15
回答 10查看 19K关注 0票数 2

我在一个名为mettl的平台上做了一个关于雇佣一家公司的测试。

问题陈述:

你给你的朋友写封情书。然而,在你的朋友读到它之前,其他人会读它,并将每个单词的字符旋转到正确的K次。找到即使在字母转移之后仍然保持不变的单词的数量。

注:单词之间可以有多个空格。

输入规范:

Input1:字串

Input2: k次旋转发生

输出规范:

您的函数应该返回正确的单词数。

示例1:

Input1: llohe ereth

输入2: 2

输出:0

Explanation:在示例1中,"llohe“是一个具有K因子2的旋转字符串。因此,在将最后两个右向左的字母移动后,我们得到原来的字符串为"Hello那里”。

示例2:

Input1: adaada

输入2: 3

输出:1

Explanation:在示例2中,"adaada“在旋转3次时返回"adaada”。因此答案是1。

我编写了下面的解决方案,它通过了上面的两个基本案例,但是隐藏测试用例(也包括时间复杂性测试用例)失败了。只有一个角测试用例通过了,因为我正在检查字符串input1,使其不为空。解决办法如下:

代码语言:javascript
复制
public int rotatedWords(String input1, int input2) {
    int count = 0;
    String arr[] = input1.split(" ");
    if (input1 != null && !input1.isEmpty()) {
        for (int i = 0; i < arr.length; i++) {
            String s1 = arr[i] + arr[i];
            int start = arr[i].length() - input2;

            System.out.println("arr[i] : " + arr[i]);
            String s2 = s1.substring(start, start + arr[i].length());
            System.out.println("s2 : " + s2);
            if (s2.equalsIgnoreCase(arr[i])) {
                count++;
            }
        }
    }
    return count;
}

问的是,我无法理解为什么隐藏的测试失败。请帮帮我。

EN

回答 10

Stack Overflow用户

发布于 2021-02-17 08:25:37

这是Python 3中的解决方案

代码语言:javascript
复制
def rotatedWords(cls, input1,input2):
    rotateString = input1.split(' ')
    count = 0
    for i in range(1,input2+1):
        for j in range(len(rotateString)):
            rotateString[j]= rotateString[j][1:]+rotateString[j][0]
        
    actualWrod = input1.split(' ')

    for i in range(len(rotateString)):
        for j in range(len(actualWrod)):
            if rotateString[i]==actualWrod[j]:
                count+=1
    return count

print(rotatedWords(1,"adaada",3))
print(rotatedWords(1,"llohe ereth",2))
票数 0
EN

Stack Overflow用户

发布于 2021-02-18 06:17:14

代码语言:javascript
复制
#include<bits/stdc++.h>
using namespace std;
 
// In-place rotates s towards left by d
void leftrotate(string &s, int d)
{
    reverse(s.begin(), s.begin()+d);
    reverse(s.begin()+d, s.end());
    reverse(s.begin(), s.end());
}
 
// In-place rotates s towards right by d
int rightrotate(string &s, int d)
{  
  string s1="";
  int i=0,flag=0;
  vector<string>str;
  while(s[i]!='\0'){
    if(s[i] != ' '){
      s1 = s1+s[i];
      i++;
    }
    else{
      if(s1 != ""){ //checking for extra space
        str.push_back(s1);
        s1 = "";
        i++;
      }
      else
        i++;
    }
  }
  str.push_back(s1);
  vector<string>str2;
  for(int i=0;i<str.size();i++){
    str2.push_back(str[i]);
  }
  for(int i=0;i<str.size();i++){
    leftrotate(str[i], str[i].length()-d);
  }
  for(int i=0;i<str.size();i++){
    if(str[i] == str2[i]){
      flag++;
    }
  }
  return flag;
}
 
int main()
{
 
    string str1;
    getline(cin, str1);
    int k;
    cin>>k;
    cout<<rightrotate(str1, k);
    return 0;
}
票数 0
EN

Stack Overflow用户

发布于 2021-02-19 20:09:49

代码语言:javascript
复制
 def check(_str):
    length = len(_str)
    for i in range(length):
        if (_str[i]!=_str[(input2+i)%length]):
            return 0
    return 1
words = input1.split()
ans = list(map(check,words))
print(sum(ans))

Python中的代码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65783973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档