我尝试在数组中找到最相似的字符串,然后我在c sharp中找到了一个代码就是这个
sort
并且我试图将其转换为java但我收到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];
}
我在这行代码中得到了错误 int cost =(t [j - 1] == s [i - 1])? 0:1; 我遇到的错误是&#34;数组是必需的,但找到了字符串&#34;这就是我的主要内容
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];
}
我将不胜感激任何帮助
答案 0 :(得分:0)
使用t.charAt(j-1)== s.charAt(i-1)来访问字符串中的字符(字母)您无法通过索引(方括号[])直接访问它们。
int cost = (t.charAt(j - 1) == s.charAt(i - 1))? 0 : 1;
答案 1 :(得分:0)
您使用[]数组运算符访问字符串作为数组:
t[j - 1] == s[i - 1]
获取字符串的第n个字符,而不是使用.charAt(n) 所以在这种情况下将其更改为:
t.charAt(j - 1) == s.charAt(i - 1)
同样适用于其余代码。