笔试强训之每日一题(九)
文章目录
字符串压缩
题目链接
题目描述
示例1:
示例2:
题目思路
题目代码
class Solution {
public:
string compressString(string S)
{
string ret;
int count = 1;
for(int i = 0;i<S.size();i++)
{
if(S[i] != S[i+1])
{
ret += S[i];
//把数字转换成字符串
//123->"123"
string temp = to_string(count);
//char temp = '0'+count;
ret+=temp;
count = 1;
}
else
{
count++;
}
}
if(ret.size()>=S.size())
return S;
else
return ret;
}
};
配对交换
题目链接
题目描述
示例1:
示例2:
题目思路
题目代码
class Solution {
public:
int exchangeBits(int num) {
//1011 -> 0111
//奇数位:0 1
//偶数位:1 1
//用两个变量odd和even保存奇数位和偶数位:
//偶数位右移一位变成奇数位,奇数位左移一位变成偶数位:0010,0101 0111
//1、先保存奇数位和偶数位
int odd = 0b10101010101010101010101010101010;//ood&num相当于将偶数位保存起来了
int even = 0b01010101010101010101010101010101;//even&num相当于将奇数位保存起来了
odd &= num;//偶数位是num的偶数位,奇数位都为0
even &= num;//奇数位是num的奇数位,偶数位都为0
return (odd>>1)+(even<<1);
}
};