面试题 05.07:配对交换

简介: 面试题 05.07:配对交换

题目

题目链接

配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。

示例1:

输入:num = 2(或者0b10)
 输出 1 (或者 0b01)

示例2:

输入:num = 3
 输出:3

解题

方法一:使用bitset

class Solution {
public:
    int exchangeBits(int num) {
        bitset<32> tmp(num);
        for(int i=0;i<32;i+=2){
            //交换tmp[i]和tmp[i+1]
            int t=tmp[i];
            tmp[i]=tmp[i+1];
            tmp[i+1]=t;
        }
        return (int)tmp.to_ulong();
    }
};

方法二:位运算(左移右移)

class Solution {
public:
    int exchangeBits(int num) {
        return ((num&0x55555555)<<1)|((num&0xaaaaaaaa)>>1);
    }
};
相关文章
|
4月前
|
消息中间件 网络架构
【面试问题】什么是 MQ topic 交换器(模式匹配) ?
【1月更文挑战第27天】【面试问题】什么是 MQ topic 交换器(模式匹配) ?
|
4月前
|
SQL 数据挖掘 数据处理
「SQL面试题库」 No_46 交换工资
「SQL面试题库」 No_46 交换工资
|
6月前
|
算法
代码随想录算法训练营第四天 | LeetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
代码随想录算法训练营第四天 | LeetCode 24. 两两交换链表中的节点、19.删除链表的倒数第N个节点、面试题 02.07. 链表相交、142.环形链表II
141 0
|
6月前
|
存储 算法
代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 ,142.环形链表II
代码随想录算法训练营第四天 | 24. 两两交换链表中的节点 ,19.删除链表的倒数第N个节点 ,面试题 02.07. 链表相交 ,142.环形链表II
|
7月前
代码随想录Day4 链表基础2 LeetCodeT24 两两交换链表中的节点 LeetCode T19删除链表的倒数第N个节点 LeetCode面试题 链表相交 LeetCode 142 环形链表
代码随想录Day4 链表基础2 LeetCodeT24 两两交换链表中的节点 LeetCode T19删除链表的倒数第N个节点 LeetCode面试题 链表相交 LeetCode 142 环形链表
15 0
|
7月前
|
程序员
【Leetcode】面试题 01.06. 字符串压缩、面试题 05.07. 配对交换
目录 面试题 01.06. 字符串压缩: 面试题 05.07. 配对交换
21 0
|
9月前
|
算法
代码随想录算法训练营第四天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 (面试题) 02.07. 链表相交 142.环形链表II
代码随想录算法训练营第四天| 24. 两两交换链表中的节点 19.删除链表的倒数第N个节点 (面试题) 02.07. 链表相交 142.环形链表II
|
负载均衡 监控 算法
90%的面试官都会问到交换网络里面冗余和破环的STP协议
90%的面试官都会问到交换网络里面冗余和破环的STP协议
188 0
90%的面试官都会问到交换网络里面冗余和破环的STP协议
|
Rust 自然语言处理 算法
【算法】面试题 16.01. 交换数字(多语言实现)
编写一个函数,不用临时变量,直接交换numbers = [a, b]中a与b的值。
【算法】面试题 16.01. 交换数字(多语言实现)
|
JavaScript
面试官在“逗”你系列:不借助第三变量交换两个变量值的方案你有几种?
在我们学习编程之初,就学习过变量的赋值操作,同时也学习了将一个变量的值赋值给另外一个变量。对于交换两个变量的值,很多童鞋都有解决方案。然鹅,对于面试官提出的不借助第三变量来交换两个变量的值,你能想到几种解决方案呢?