Java 检查是否可以使用递归将一个字符串转换为另一个字符串

Java 检查是否可以使用递归将一个字符串转换为另一个字符串,java,algorithm,Java,Algorithm,我试图通过使用递归来解决下面的方法 静态布尔缩写(字符串a、字符串b、int m、int n){ char[]x=a.toCharArray(); 如果(m==0 | | n==0) 返回true; 如果(m==0&&n!=0) 返回false; 如果(n==0){ 对于(int i=0;i

我试图通过使用递归来解决下面的方法

静态布尔缩写(字符串a、字符串b、int m、int n){
char[]x=a.toCharArray();
如果(m==0 | | n==0)
返回true;
如果(m==0&&n!=0)
返回false;
如果(n==0){
对于(int i=0;i
对于以下输入,我得到的是
true
而不是
false

输入1

AbCdE

AFE

输入2

适合


EFG

当遍历两个字符串的字符时,有3种情况

  • 字符匹配(如果是小写,则使用大写)
  • 字符不匹配,第一个字符串为小写
  • 字符不匹配,第一个字符串为大写
若在第一个字符串中检查了所有字符,则检查是否匹配所有字符

  boolean abbreviation(String a, String b, int m, int n) {
    if (m == 0)
      return n == 0;

    if (n > 0 && Character.toUpperCase(a.charAt(m - 1)) == b.charAt(n - 1)) {
      return abbreviation(a, b, m - 1, n - 1);
    } else if(!Character.isUpperCase(a.charAt(m - 1))) {
      return abbreviation(a, b, m - 1, n);
    } else {
      return false;
    }
  }
演示:

输出:

false
false
true
true

你也可以像你的链接那样显示主功能吗?为下面的输入字符串1:daBcd字符串2:ABCFixed现在和添加的demo alsoI尝试提交hacker rank 6测试用例失败
System.out.println(abbreviation("AbCdE", "AFE", 5, 3));
System.out.println(abbreviation("beFgH", "EFG", 5, 3));
System.out.println(abbreviation("beFgh", "EFG", 5, 3));
System.out.println(abbreviation("daBcd", "ABC", 5, 3));
false
false
true
true