[英]lossy conversion from double to int for Rabin Karp Algorithm Code
我指的是 Rabin karp 算法的代码。 但是在 while 循环中它给出了一个错误
从 double 到 int 的可能有损转换。 谁能帮我解决这个错误。
import java.util.Scanner;
public class Main {
static boolean rabinKarp(String text, String pattern) {
int pLength= pattern.length();
int n=pLength-1;
int res=0, curr=0;
int i=0;
for(;i<pLength;i++)
res+= (pattern.charAt(i)-'a'+1)*Math.pow(10,n--);
n=pLength-1;
for(i=0;i<pLength;i++)
curr+= (text.charAt(i)-'a'+1)*Math.pow(10,n--);
if(res==curr)
return true;
n=pLength-1;
while(i<text.length()){
int p= Math.pow(10,n);
int sub= (text.charAt(i-pLength)-'a'+1)*p;
int add= (text.charAt(i)-'a'+1);
curr= (curr-sub)*10+add;
if(res==curr)
return true;
i++;
}
return false;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String text = "abcbab";
String pattern = "bab";
System.out.println(rabinKarp(text,pattern));
}
}
Math 中的 pow 方法会给你一个 double,你必须手动转换它: int p= (int) Math.pow(10,n);
另见计算整数的幂
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.