当前位置: 首页 > 知识库问答 >
问题:

测试用例在执行特殊回文字符串程序时失败

解翰采
2023-03-14
  • 我试图解决黑客等级问题,以计算字符串中包含的特殊回文字符串的数量
  • 要考虑特殊回文字符串,所有字符都应相同,除中间字符外的所有字符都相同
  • 例如,string=asasd,那么回文字符串是{a、s、a、s,d、asa、sas}
  • 在这个程序中,两个测试用例分别用字符串asasd和aaaa传递
  • 字符串abcbaba
  • 的一个测试用例失败
  • 我研究了第二个条件,但我对执行感到震惊
  • 你们能用你们的建议帮我解决问题吗
  • 提供以下完整代码
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class MyClass {
    public static void main(String args[]) {
        int counter=0;
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // read an integer from input stream.
        String s = scanner.next();
        char string_array[] = s.toCharArray();
        for(int i=0; i<s.length(); i++){
            for(int j=i; j<=s.length(); j++){
                if(i != j){
                    String s1 = s.substring(i,j);
                    String rev = "";
                    for(int z=0; z<s1.length(); z++){
                    rev = rev + s1.charAt(s1.length()-1-z);
                    }
                    //System.out.println("s1=" + s1 +  "rev=" + rev);
                    int count = s1.compareTo(rev);
                    if(count == 0){
                    counter++;
                }
                }
            }

        }
        System.out.println(counter);
}

共有1个答案

禄奇希
2023-03-14

您的算法没有检查字符相等的特殊回文要求。以下算法添加了这种检查:

public class MyClass {
    public static void main(String args[]) {
        int counter=0;
        String s = "abcbaba";
        char string_array[] = s.toCharArray();
        for(int i=0; i<s.length(); i++){
            for(int j=i; j<=s.length(); j++){
                if(i != j){
                    String s1 = s.substring(i,j);
                    String rev = "";
                    char complianceChar = s1.charAt(0);
                    boolean isSpecialPalindrom = true;
                    boolean isLengthEven = s1.length()%2==0;
                    for(int z=0; z<s1.length(); z++) {
                        char c = s1.charAt(s1.length()-1-z);
                        rev = rev + c;
                        boolean isMiddleChar = (z == (s1.length()-1)/2);
                        if(isSpecialPalindrom && (isLengthEven || !isMiddleChar)) {
                            isSpecialPalindrom = (c == complianceChar);
                        }
                    }
                    int count = s1.compareTo(rev);
                    if(count == 0 && isSpecialPalindrom){
                        System.out.println(rev);
                        counter++;
                    }
                }
            }
        }
        System.out.println(counter);
    }
}

输出是:

a
b
bcb
c
b
bab
a
aba
b
a
10
 类似资料:
  • 我写了一个java程序,它基本上和wordle一样。例如,给定2 3x3行 如果猜测与答案匹配(在本例中,索引[0][0]),则将其标记为“绿色” 如果猜测与确切位置的答案不匹配,但它是有效的(例如,答案[1][0]处的答案与猜测[1][0]处的答案不匹配,但是猜测[0][1]处的答案),则将被计为“黄色” 这是我目前拥有的代码。它适用于这个测试用例和除一个之外的所有其他测试用例。我似乎没能抓住我

  • 问题内容: 我有一个字符串“ ́aúlt”,我想根据字符位置等获得操纵的长度。问题在于第一个数字被计数两次,或者我猜数字在位置0而数字在位置1。 Python中是否有任何可能的方式来将像“ ́”这样的字符表示为1? 我正在将UTF-8编码用于输出的实际代码和网页。 编辑:关于为什么我需要这样做的一些背景。我正在做一个项目,该项目将英语翻译成塞内卡(一种美洲原住民语言),而„ ́出现了很多。某些单词

  • 我写了一个java程序,基本上实现了wordle的功能。例如,给定2 3x3行 我目前不太担心速度,它的性能和我对简单实现的期望差不多。

  • 下面TestNG执行测试用例会导致失败。错误-org.openqa.selenium.WebDriverExcture:在处理命令时发生了未知的服务器端错误。原始错误:无法将命令代理到远程服务器。原始错误:错误:套接字挂断(警告:服务器没有提供任何堆栈跟踪信息)命令持续时间或超时: 56毫秒

  • 我的回文程序有一点逻辑错误,当我在字符串的前面或后面插入特殊字符时,我得到一个指示,表明该字符串不是回文。我正在编写回文,以便在考虑字符串时忽略所有特殊字符。例如,@bob将被认为不是回文,而b@ob将被认为是回文。我该如何编辑我的代码,使特殊字符被忽略,而不管位置在哪里?所有这些都是通过递归完成的。 ''' import java.util.Scanner; 公共类递归练习{ } '''

  • 我有一个HashMap,里面有键和值。我想用字符串中映射的值替换键。 在字符串中,键被写成@keyname或@“keyname”,这些应替换为map.get(“keyname”) 假设我们的地图是这个 所以如果我们处理字符串“Hello world,Iam@key1 years old.”,它将变成“Hello world,Iam 2 years old.”。 我们可以用@“key1”代替@key