挺有意思的一道题
题目
思路
构成回文串的情况:1.每个字符都出现了两次2.每个组成对出现的字符加上一个单个字符、
统计字符出现的次数即可,双数才能构成回文。因为允许中间一个数单独出现,比如“abcba”,所以如果最后有字母落单,总长度可以加 1。首先将字符串转变为字符数组。然后遍历该数组,判断对应字符是否在hashset中,如果不在就加进去,如果在就让count++,然后移除该字符!这样就能找到出现次数为双数的字符个数
代码
class Solution {
public int longestPalindrome(String s) {
HashSet<Character> hashset = new HashSet<Character>();
char[]arr=s.toCharArray();
int count=0;
for(int i=0;i<s.length();i++){
if(!hashset.contains(arr[i])){
hashset.add(arr[i]);
}else{
hashset.remove(arr[i]);
count++;
}
}
return hashset.isEmpty()?2*count:2*count+1;
}
}
题目
输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有奇数在数组的前半部分,所有偶数在数组的后半部分。
代码
class Solution {
public int[] exchange(int[] nums) {
int a=0;
for(int i=0;i<nums.length;i++){
if(nums[i]%2==1){
int temp=nums[a];
nums[a]=nums[i];
nums[i]=temp;
a++;
}
}
return nums;
}
}