尝试将String S转换为String 1,如果为true,则返回1,否则返回false

时间:2018-08-12 17:46:58

标签: java

我正在尝试通过从S中删除一些字符来确定是否有可能将给定的字符串S转换为StringT。任何帮助将不胜感激。

class Solution {
        public int solution(String S, String T) {

            int n = S.length();
            int m = T.length();

            boolean dp [][] = new boolean[n+1][m+1];

            for (int i = 0; i <= n; i++){
                for (int j = 0; j<=m; j++){
                    dp[i][j] = false;
                }
            }
            dp[0][0] = true;

            for (int i = 0; i < S.length(); i++){
                for (int j = 0; j < T.length(); j++){
                    if (dp[i][j]){
                        if(j<T.length() && (Character.toUpperCase(S.charAT(i)) == T.charAT(j)))
                        dp[i+1][j+1] = true;
                    if(!Character.isUpperCase(S.charAT(i)))
                    dp[i+1][j] = true;

                    }
                }
            }
            return (dp[n][m]);
            // write your code in Java SE 8
        }
    }

2 个答案:

答案 0 :(得分:3)

由于boolean的默认值为false,因此您的大多数dp[][]值为false

在这种情况下,以下语句无用

dp[i][j] = false;

因此只有dp[0][0]通过以下语句,

if (dp[i][j])

您的代码中还有更多问题。

  • 您已经提到该方法的返回类型为int,并尝试返回boolean
  • charAT(i)应该为charAt(i),因为Java区分大小写。

根据标题 ...如果为true,则返回 1 ,否则为 ,则返回 false ,因此,您不能从单一方法。它应该是booleanint。应该是

  • ...如果为true,则返回1,否则为0
  • ...如果为true,则返回true,否则为false

答案 1 :(得分:3)

这是一个简单的问题,您不需要多行代码。试试这个:

public boolean solution(String S, String T) {
    return S.contains(T);
}

从String API,如果S字符串包含T字符串,则contains方法返回true。

编辑:我犯了一个错误,您的问题是将字符串S转换为A,这是另一种解决方法:

public boolean solution(String S, String T) {
     int charMet = 0;

     for (int i = 0; i < S.length(); i++)
     for (int j = 0; j < T.length(); j++)
     if (S.charAt(i) == T.charAt(j)) charMet++;

     return charMet == T.length();
}