Java 给定一个字符串,确定该字符串的排列是否可以形成回文
我正在Leetcode上解决这个问题,我已经看到了一个解决方案,但是我在理解解决方案中使用的一些语法时遇到了困难。如果有人能给我解释一下,我会非常感激的 问题: 解决方案:Java 给定一个字符串,确定该字符串的排列是否可以形成回文,java,data-structures,Java,Data Structures,我正在Leetcode上解决这个问题,我已经看到了一个解决方案,但是我在理解解决方案中使用的一些语法时遇到了困难。如果有人能给我解释一下,我会非常感激的 问题: 解决方案: class Solution { public boolean canPermutePalindrome(String s) { int count=0; int[]arr=new int[128]; for(int i=0;i<s.lengt
class Solution {
public boolean canPermutePalindrome(String s) {
int count=0;
int[]arr=new int[128];
for(int i=0;i<s.length();i++){
arr[s.charAt(i)]++;
if(arr[s.charAt(i)]%2==0)
count--;
else
count++;
}
return count <=1;
}
}
我的问题是:
我见过其他类似的问题,初始化大小为128或256的数组。在这样的问题中,为什么要使用128或256作为数组大小?有什么特别的原因吗
arr[s.charAti]++;
在这样的问题中,为什么要使用128或256作为数组大小?这用于字符实例计数。字符应在0-127或0-255之间
arr[s.charAti]++;
根据字符集是ascii还是扩展ascii,数组长度取128或256。请参阅
arr[s.charAti]++表示字符增量。在Java中,char是一种数字类型。将1添加到字符时,将进入下一个unicode代码点。
arr[s.charAti]++转换为:
arr[s.charAti]=arr[s.charAti]+1;
试试这个
它对字符进行频率计数。
然后计算具有奇数频率的字符数。
如果有多组字符出现奇数次,则
无法重新排列为回文。
请不要在链接中发布您的问题未订阅Premiumy链接无法访问您不是在说明您的问题,而是提供一个指向需要帐户登录的站点的链接。对不起,我没有意识到这是一个高级问题:问题:给定一个字符串,确定字符串的排列是否可以形成回文。示例1:Input:code Output:false示例2:Input:aab Output:true示例3:Input:carerac Output:TrueThank..让我们假设一个字符串aab和相同字符串的数组{a,a,b}。。。arr[s.charAt1]++转换为arr[a]+1,即arr[b]?因为a在索引1处,如果我们加上1,我们得到索引2处的b?arr[s.charAti]++只是增加该位置的值。假设字符串是aab,i=0。s、 charAti=s.charAt0=a;arr[s.charAt0]=arr[a]将是arr[97],因为ascii是ascii表中的is 97。所以语句被翻译成arr[97]=arr[97]+1。因此,总的来说,第97指数的值将增加1,以此类推
public static boolean isConvertable(String a) {
long count = Arrays.stream(a.split(""))
.collect(Collectors.groupingBy(str -> str,
Collectors.counting()))
.values().stream().filter(val -> (val % 2) == 1)
.count();
return count <= 1;
}