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 ++]相同吗?
答案 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
数组用于计算这两个字符串t
和s
中每个字母的重复次数
每个字符都有ascii-code所以在这个for-each
循环中,c
会转换为其ascii代码,实际上它会从char
转换为integer
所以它会是index
,ascii-code
对每个字符都是唯一的
在此声明中letters[c]++;
考虑char c = 'A'
,c
65
ascii-table
,65th 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
的重复,因为66
是422 Unprocessable Entity
。