数组增量语法

时间:2016-01-23 17:03:13

标签: java arrays

static boolean permutation(String s, String t){
    if(s.length() != t.length()) return false;
    int [] letters = new int [128];
    char[] s_array = s.toCharArray();
    for (char c: s_array){
        letters[c]++;
    }
    for(int i = 0; i< t.length(); i++){
        int c = (int) t.charAt(i);
        letters[c]--;
        if ( letters [c] < 0 )return false; 
    }
    return true;
}

所以这段代码片段来自Cracking the Coding Interview,我想知道字母[c] ++和字母[c] - 是什么意思。

这与字母[c ++]相同吗?

5 个答案:

答案 0 :(得分:1)

  

所以这段代码片段来自Cracking the Coding Interview,我想知道字母[c] ++和字母[c] - 是什么意思。

     

这与字母[c ++]相同吗?

没有。 letters[c]++相当于

letters[c] = letters[c] + 1;

letters[c]--执行

letters[c] = letters[c] - 1;

letters[c++]等同于

letters[c] = letters[c];
c = c + 1;

答案 1 :(得分:0)

它从字母数组中递增和递减值。 c是您递增的字母数组的索引;因此,[c++]字母不起作用。

答案 2 :(得分:0)

  

这与字母[c ++]相同吗?

甚至没有一点点。 :-) letters[c++]在那些地方会出现语法错误(因为Java不允许任意表达式作为语句),因为它是letters[c]; c = c + 1;

letters[c]++实际上是:

letters[c] = letters[c] + 1;

,例如,letters[c]中的值增加一个。它根本没有改变c

--的工作方式相同,只是减少。

答案 3 :(得分:0)

在这种情况下是相同的:

  letters[c] = letters[c] + 1;

并且

  letters[c] = letters[c] - 1;

因为letters是一个整数数组。 但是对值使用++--运算符时没有意义(当你有ex:一个String数组时)。

答案 4 :(得分:0)

letters数组用于计算这两个字符串ts中每个字母的重复次数

每个字符都有ascii-code所以在这个for-each循环中,c会转换为其ascii代码,实际上它会从char转换为integer所以它会是indexascii-code对每个字符都是唯一的

在此声明中letters[c]++;考虑char c = 'A'c 65 ascii-table65th element'A'字母数组s将增加一次,所以到目前为止,我们在s字符串中有一个for (char c: s_array){ letters[c]++; } ,当循环结束时,我们计算了字符串t中每个字母的重复次数。

t

和其他循环类似,但它使用字符串s个字符,permutation of s and t中的每个字符从字符char c ='A'中重复一次,以确定{{1} }}

希望你明白我说的话!

和这个问题!

  

这与字母[c ++]相同吗?

没有它们是不同的。考虑character B这句话,你说会增加ascii code of B的重复,因为66422 Unprocessable Entity