Java 情书字符串旋转公司测试编程题库测试用例通过,隐藏测试用例失败
我在名为mettl的平台上进行了一次招聘公司的测试 问题陈述: 你给你的朋友写了一封情书。但是,在您的朋友阅读之前,其他人会先阅读并将每个单词的字符旋转到正确的K倍。找出即使在字母移位后仍保持不变的单词数 注意:单词之间可以有多个空格 输入规格: 输入1:字符串 输入2:K发生旋转的次数 输出规格: 函数应该返回正确的字数 例1: 输入1:llohe ereth 投入2:2 输出:0 说明:在示例1中,llohe ereth是一个带K因子2的旋转字符串。因此,在从右向左移动最后两个字母后,我们在那里得到原始字符串Hello 例2: 输入1:adaada 投入2:3 产出:1 说明:在示例2中,当旋转3次时,ADADA返回ADADA。因此答案是1 我写了下面的解决方案,它通过了上述两个基本案例,但对于隐藏测试案例来说失败了,还包括时间复杂度测试案例。只有一个角落的测试用例通过,因为我正在检查字符串input1是否为空。解决方案如下:Java 情书字符串旋转公司测试编程题库测试用例通过,隐藏测试用例失败,java,string,substring,Java,String,Substring,我在名为mettl的平台上进行了一次招聘公司的测试 问题陈述: 你给你的朋友写了一封情书。但是,在您的朋友阅读之前,其他人会先阅读并将每个单词的字符旋转到正确的K倍。找出即使在字母移位后仍保持不变的单词数 注意:单词之间可以有多个空格 输入规格: 输入1:字符串 输入2:K发生旋转的次数 输出规格: 函数应该返回正确的字数 例1: 输入1:llohe ereth 投入2:2 输出:0 说明:在示例1中,llohe ereth是一个带K因子2的旋转字符串。因此,在从右向左移动最后两个字母后,我们在
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;
}
如果问这个问题,我无法理解为什么隐藏的测试用例会失败。请帮帮我。这是Python 3中的解决方案
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))
Java解决方案*
这是Python3中的解决方案
def rotatedWords(cls, input1,input2):
rotate_string = input1.split(' ') # converting string to list
count = 0
for i in range(1,input2+1):
for j in range(len(rotate_string)):
rotate_string[j]= rotate_string[j][-1]+rotate_string[j][0:-1]
actual_word = input1.split(' ')
for i in range(len(rotate_string)):
for j in range(len(actual_word)):
if rotate_string[i]==actual_word[j]:
count+=1
return count
print(rotatedWords(1,"adaada",3))
print(rotatedWords(1,"llohe ereth",2))
尝试更多您自己的测试用例。您是否测试过他们笔记中提到的案例是否有效?是的,两个测试案例都运行良好。我也检查了我的机器。我还提到了基本测试用例正在通过的问题。试着想象一下隐藏测试用例可能会检查的一些事情,例如注释中特别指出的需求,并用它们来测试代码。想想实际的字母会是什么样子。也许你还需要处理其他一些符号。比如逗号和点。其他特殊角色呢?数字?标签?新行?@Monitoria是的,如果那天晚上是这样的话,我应该删除包含特殊字符的原始字符串。请解释问题中的代码有什么问题,以及该代码如何解决问题。似乎K表示他在句子中每个单词从左向右或从右向左移动了多少个字符,试试这个,它可能通过其他测试用例。请阅读并更新您的答案。
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))
package fun;
public class Test1 {
public static void main(String[] args) {
System.out.println(rotatedWords("llohe ereth", 2));
System.out.println(rotatedWords("adaada", 3));
}
public static 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++) {
System.out.println("Orginal Word :" + arr[i]);
int start = arr[i].length() - input2;
String s1 = arr[i].substring(start);
System.out.println("s1 : " + s1);
String s2 = arr[i].substring(0, start);
System.out.println("s2 : " + s2);
System.out.println("New Word : " + s1 + s2);
if ((s1 + s2).equals(arr[i])) {
count++;
}
}
}
return count;
}
}
import java.util.Scanner;
public class Main
{
//rotate every word of the given string by the given rotation value
public static String rotate_string (String str, int d)
{
String ans = str.substring (d) + str.substring (0, d);
return ans;
}
public static void rotated (String str, int rotated)
{
String[]wordsarr = str.split ("\\s"); // convert string to an array of strings.
String rotatedarr[] = new String[wordsarr.length]; // to store the rotated array.
for (int i = 0; i < wordsarr.length; i++)
{
rotatedarr[i] = rotate_string(wordsarr[i], wordsarr[i].length () - rotated);
}
int count = 0;
for (int i = 0; i < wordsarr.length; i++)
{
if (wordsarr[i].equals (rotatedarr[i]))
{
count++;
}
}
System.out.println (count);
}
public static void main (String[]args)
{
Scanner s= new Scanner(System.in);
String str= s.nextLine(); //input string
int rotate_by= s.nextInt();
rotated(str,rotate_by);
}
}
$str = "Hello Friend";
$kTime = 5;
$arr = explode (' ',$str);
$sizeOfArr = count($arr);
$char = array();
$count = 0;
foreach($arr as $k=>$v)
{
$ln = $kTime%strlen($v);
$char = substr($v,$ln).substr($v,0,$ln);
if($v == $char)
{
$count++;
}
}
echo 'Number of Original word after rotation found : '.$count;
def rotatedWords(cls, input1,input2):
rotate_string = input1.split(' ') # converting string to list
count = 0
for i in range(1,input2+1):
for j in range(len(rotate_string)):
rotate_string[j]= rotate_string[j][-1]+rotate_string[j][0:-1]
actual_word = input1.split(' ')
for i in range(len(rotate_string)):
for j in range(len(actual_word)):
if rotate_string[i]==actual_word[j]:
count+=1
return count
print(rotatedWords(1,"adaada",3))
print(rotatedWords(1,"llohe ereth",2))