Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 缓冲区数组在循环中做什么?_Java_Algorithm - Fatal编程技术网

Java 缓冲区数组在循环中做什么?

Java 缓冲区数组在循环中做什么?,java,algorithm,Java,Algorithm,你能给我解释一下这个密码吗?我不能理解缓冲区数组的用法。每个索引的值如何变为零 public static boolean isAnagram(String input1, String input2) { if(input1 == null || input2 == null || (input1.length() != input2.length())){ return false; } else { int[]

你能给我解释一下这个密码吗?我不能理解缓冲区数组的用法。每个索引的值如何变为零

public static boolean isAnagram(String input1, String input2) {
        if(input1 == null || input2 == null || (input1.length() != input2.length())){
            return false;
        } else {
            int[] buffer = new int[26];
            for(int i=0; i < input1.length(); i++){
                buffer[input1.charAt(i) - 'a']++;  
                buffer[input2.charAt(i) - 'a']--;  
            }
            for(int j=0; j < buffer.length; j++){
                if(buffer[j] != 0) return false;   
            }
            return true;
        }
    }
公共静态布尔isAnagram(字符串input1,字符串input2){
如果(input1==null | | input2==null | |(input1.length()!=input2.length()){
返回false;
}否则{
int[]缓冲区=新int[26];
对于(int i=0;i
缓冲区
为字符串中使用的每个小写字符值保存一个使用计数器,最初全部为零

然后,对于
input1
中的字符的每次使用,每个计数器都会递增,对于
input2
中的字符的每次使用,每个计数器都会递减,因此,如果所有字符的使用次数相同,则所有计数器最终都将变为零


如果使用不包含小写字母的字符串调用此函数,则该函数可能会崩溃。

如果您能回答自己的问题,那就太好了。24小时后(我想)你就能接受这个答案了。你的评论听起来确实有些讽刺。这段代码在没有exception@janith1024是的。实际上,-a和+a返回的是+1和-1,所以如果字符串是字谜,它会相互抵消,因此整个数组变为零。我算出了。但是感谢你的帮助。非常感谢。