gpt4 book ai didi

Java anagram工作代码,辅助理解代码概念

转载 作者:行者123 更新时间:2023-11-30 12:06:42 25 4
gpt4 key购买 nike

public static boolean anagramTest(String one, String two){  // two parameter and boolean (true or false)                                        

String a = one.toLowerCase(); // making value into lower case
String b = two.toLowerCase();

if (a.length() != b.length()){ // if value in a is not equal to b, return false
return false;
}

int[] check = new int[50]; // new array called counter with 50 space
int difference = 0; // new int labled checker

for (int i=0;i<a.length(); i++){ // for loop for first length
int o = (int) a.charAt(i) - 97; //making char into array index, a numeric value for a?
if (check[o] >= 0){ // ---
difference++;
} else {
difference--; // ---
}
check[o]++; // ----

int t = (int) b.charAt(i) - 97; //making char into array index
if (check[t] <= 0){
difference++;
} else {
difference--;
}
check[t]--;
}
}

我在在线资源的帮助下用 main 创建了一个代码,但我模糊地理解它是如何工作的,并且想确保我完全理解这个概念,所以首先我将两个参数放入要转换为小写的新字符串,如果 ab 不同,则为 false。所以我创建了一个新数组和 int。带有新 int 的 for 循环,其中值 charAt 但为什么是 97,显然你从 a 减去 z?然后它检查差异的增加和减少,对 b 值进行相同处理,并以返回值为 0 结束。

最佳答案

我觉得分阶段理解更清楚:

1) check 数组跟踪字符串 a 中出现的字母的频率减去字符串 b 中出现的字母的频率>。也就是说,在函数的最后,check[c-'a']表示字符'c'在字符串中出现的次数a 减去它在字符串 b 中出现的次数。(顺便说一句,字符 a 的 ASCII 码是 97)。

2) 从这里开始,您要确保check 数组全为零——即:两个字符串中字符的频率是平衡的。如果是这样,则这两个字符串是变位词。否则,计算出的差异 值将是校验数组的绝对值之和。

关于Java anagram工作代码,辅助理解代码概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55388235/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com