剑指Offer----扩展:0-1交换
来源:互联网 发布:python实例教程 编辑:程序博客网 时间:2024/06/05 22:57
问题描述:
把一个0-1串(只包含0和1的串)进行排序,你可以交换任意两个位置,使所有的0在前边,所有的1在后边,问最少交换的次数?
方法分析:两个指针,分别指向头和尾,当头指向1,尾指向0的时候,进行交换,直至两个指针相遇!
#include<stdio.h>#include<stdlib.h>#include<string.h>int SwapTime(char *arr, int length){if (arr == NULL || length <= 1)return -1;int count = 0;for (int i = 0, j = length; i < j; ++i, --j){while (arr[i] != '1' && i < j)++i;while (arr[j] != '0' && i < j)--j;if (i < j)count++;}return count;}void test1(){char *str = "11110000";printf("Changed %d times.\n", SwapTime(str, strlen(str)));}void test2(){char *str = "111";printf("Changed %d times.\n", SwapTime(str, strlen(str)));}void test3(){char *str = "10011001";printf("Changed %d times.\n", SwapTime(str, strlen(str)));}int main(){test1();test2();test3();printf("%s %s\n", __DATE__, __TIME__);system("pause");return 0;}
运行结果:
Changed 4 times.Changed 0 times.Changed 2 times.Aug 25 2016 16:51:32请按任意键继续. . .
0 0
- 剑指Offer----扩展:0-1交换
- 剑指Offer----扩展:交换星号
- 剑指Offer----扩展:二进制(小米)
- 剑指offer 第4题扩展
- 剑指offer第28题扩展题
- 《剑指offer》面试题16扩展题
- 【剑指offer】(扩展)员工年龄排序
- 【剑指offer】(扩展)大数相加
- 【剑指offer】(扩展)求链表中间结点
- 剑指Offer----扩展:删a复制b
- 剑指Offer----扩展:邻里不和(中兴)
- 剑指Offer----扩展:字符移位(腾讯)
- 剑指Offer----扩展:构造回文(腾讯)
- 剑指Offer----扩展:年终奖(京东)
- 剑指Offer----扩展:抛小球(京东)
- 剑指Offer----扩展:小东分苹果(京东)
- 剑指Offer----扩展:上台阶(京东)
- 剑指Offer----扩展:选择题(京东)
- 第8课:彻底实战详解使用IDE开发Spark程序
- 解决Linux系统下(交叉)编译出现“cannot find -lxxx”的错误 (ubuntu)
- [MySQL]mac完全卸载MySQL
- 调用苹果地图、百度地图、高德地图导航(不需要集成sdk)
- windows下使用tftp工具下载文件到开发板(linux)
- 剑指Offer----扩展:0-1交换
- Android 单元测试
- RHEL5.1的TFTP服务器的安装
- MyBatis学习总结[2]-接口式调用
- centos6.5 安装kafka2.11
- 情感
- java 三大特性之继承
- JSONP跨域总结和实践
- poj-1611The Suspects(并查集求被感染的人数)