我正在尝试通过从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
}
}
答案 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 ,因此,您不能从单一方法。它应该是boolean
或int
。应该是
1
,否则为0
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();
}