Advertisement
Guest User

Untitled

a guest
Aug 23rd, 2019
157
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.13 KB | None | 0 0
  1. public class RabinKarpAlgorithm {
  2.  
  3. private static long getNumber(char[] chars) {
  4. long number = 0;
  5.  
  6. for (char ch: chars) {
  7. number = (number * 10) + ((int) ch - (int)'a' + 1);
  8. }
  9.  
  10. return number;
  11. }
  12.  
  13. private static boolean contains(String a, String b) {
  14. String smaller = a.length() <= b.length() ? a : b;
  15. String larger = a.length() > b.length() ? a : b;
  16. char[] ch1 = larger.toCharArray();
  17. char[] ch2 = smaller.toCharArray();
  18.  
  19. long smallerNumber = getNumber(ch2);
  20.  
  21. int i = 0;
  22. int j = smaller.length() - 1;
  23. long number = 0;
  24. while (true) {
  25. if (i == 0) {
  26. for (int k = 0; k <= j; k++) {
  27. number = (number * 10) + ((int) ch1[k] - (int)'a' + 1);
  28. }
  29. }
  30.  
  31. if (number == smallerNumber) {
  32. return true;
  33. } else {
  34. j++;
  35.  
  36. if (j == ch1.length) {
  37. break;
  38. } else {
  39. number = ((number - ((int) ch1[i] - (int) 'a' + 1) * (long) Math.pow(10, ch2.length - 1)) * 10) + ((int) ch1[j] - (int) 'a' + 1);
  40. i++;
  41. }
  42. }
  43. }
  44.  
  45. return false;
  46. }
  47.  
  48. public static void main(String[] args) {
  49. String a = "abcdeabdeabcdf";
  50. String b = "abcdf";
  51.  
  52. System.out.println(contains(a, b));
  53. }
  54. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement