用于字谜子串搜索的 Java 程序
javaobject oriented programmingprogramming更新于 2025/7/7 3:24:17
以下是 Java 中字谜子串搜索的示例 −
示例
public class Demo{
static final int max_val = 256;
static boolean compare_vals(char my_arr_1[], char my_arr_2[]){
for (int i = 0; i < max_val; i++)
if (my_arr_1[i] != my_arr_2[i])
return false;
return true;
}
static void search_subs(String my_pattern, String my_text){
int pat_len = my_pattern.length();
int txt_len = my_text.length();
char[] count_pat = new char[max_val];
char[] count_txt = new char[max_val];
for (int i = 0; i < pat_len; i++){
(count_pat[my_pattern.charAt(i)])++;
(count_txt[my_text.charAt(i)])++;
}
for (int i = pat_len; i < txt_len; i++){
if (compare_vals(count_pat, count_txt))
System.out.println("在索引" + (i - pat_len) 处找到元素);
(count_txt[my_text.charAt(i)])++;
count_txt[my_text.charAt(i-pat_len)]--;
}
if (compare_vals(count_pat, count_txt))
System.out.println("在索引处找到元素" + (txt_len - pat_len));
}
public static void main(String args[]){
String my_text = "ABNFGHABNJGH";
String my_pattern = "NFGH";
search_subs(my_pattern, my_text);
}
}
输出
在索引 2 处找到元素
名为 Demo 的类定义了一个常量值和一个布尔函数,该函数接受两个数组。它对两个数组进行迭代,直到达到常量值。它根据比较的数组中的元素是否相等或不相等返回 true 或 false。
另一个静态函数接受文本和文本中需要检查的模式,并迭代模式和字符串。模式和字符串的计数都会增加。再次使用‘for’循环运行,并比较模式和文本的计数。如果它们相等,则显示索引。否则,显示相关信息。在主类中,定义模式和文本并调用该函数。
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

