にCシャープコードを変換しようとは配列に最も類似した文字列を検索してみてください、と私は、この1問題私はjavaの
public static int LevenshteinDistance(string s, string t)
{
int n = s.Length;
int m = t.Length;
int[,] d = new int[n + 1, m + 1];
if (n == 0)
{
return m;
}
if (m == 0)
{
return n;
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
int cost = (t[j - 1] == s[i - 1]) ? 0 : 1;
Console.WriteLine(cost);
d[i, j] = Math.Min(
Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1),
d[i - 1, j - 1] + cost);
}
}
return d[n, m];
}
であると私は変換しようとしているシャープなCのコードを見つけましたジャワにそれますが、私は、コード int型のコスト=(T [J - 1] == S [I - 1])のこの行でエラーが出るこれはjavaの
public static int LevenshteinDistance(String s, String t)
{
int n = s.length();
int m = t.length();
int[][] d = new int[n + 1][ m + 1];
if (n == 0)
{
return m;
}
if (m == 0)
{
return n;
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
int cost = (t[j - 1] == s[i - 1])? 0 : 1;
d[i][ j] = Math.min(
Math.min(d[i - 1][ j] + 1, d[i][ j - 1] + 1),
d[i - 1][ j - 1]+cost);
}
}
return d[n] [m];
}
で私のコードである1つのエラーが発生します? 0:1;私が持っている エラーは、「アレイが必要ですが、文字列が見つかっ」で、これは私は持っているものである私のメインの私は任意の助けをいただければ幸いです
String []ray ={"food","drinks","stuffs"};
String fa="drink";
for (int i = 0; i < ray.length; i++)
{
System.out.print(LevenshteinDistance(fa, ray[i]));
}
文字列内の文字(文字)にアクセスするにはt.charAt(j-1)== s.charAt(i-1)を使用する必要があります。インデックス(角括弧[])で直接アクセスすることはできません。 – Tatranskymedved
ありがとう、それは動作する<3私は別の質問が何を意味するのですか? 0:1; – RonaldB
3次演算子(3値= 3) - [Wikipedia](https://en.wikipedia.org/wiki/%3F:#Java)をチェックしてください。それは次のことを意味します:(条件)?(DoIfTrue):(DoIfFalse); – Tatranskymedved