)RGB排序,一个字符串,里面只有三种字符R G B,所有的R都在G的前面,所有的G都在B的前面。将给定字符串按照此规律排序。要求不允许用辅助空间,复杂度控制在O(N)。遍历一遍就排好序。
来源:互联网 发布:流星搜剑录激活码淘宝 编辑:程序博客网 时间:2024/05/20 18:42
#include "stdafx.h"#include "stdlib.h"#include <string>#include <vector>#include <list>#include <algorithm>using namespace std;//算法中谈到了怎样不增加任何空间,交换两个元素的位置,在前面中介绍的是char型的加减法实现的,在做加减法实现的过程中要防止溢出,所以我这里换了个方法,使用异或实现!void swap(std::string &StrSrc,int i,int j) { StrSrc[i]=StrSrc[i]^StrSrc[j]; StrSrc[j]=StrSrc[j]^StrSrc[i]; StrSrc[i]=StrSrc[i]^StrSrc[j]; return;} //返回flase表示排序已经完成bool StringSortGG(std::string &StrSrc,int &i,int &j){ int ibegin,iend; ibegin=i+1; iend=j-1; if (ibegin>iend) { return false; // } while (ibegin<=iend) { // if (StrSrc[ibegin]=='R') { swap(StrSrc,i,ibegin); i++; break; }else if (StrSrc[iend]=='B') { swap(StrSrc,j,iend); j--; break; }else if (StrSrc[ibegin]=='B') { swap(StrSrc,ibegin,j); j--; break; }else if (StrSrc[iend]=='R') { swap(StrSrc,i,iend); i++; }else{ ibegin++; iend--; if (ibegin>iend) { return false; } } } return true;}bool StringSort(std::string &StrSrc){ // std::string StrSrc="RGBBGRRBRGRBBG"; if (StrSrc.empty()) { return false; } int i=0; int j=StrSrc.length()-1; while (i<j) { if (StrSrc[i]=='R') { i++; }else if (StrSrc[j]=='B') { j--; }else if (StrSrc[i]=='B') { swap(StrSrc,i,j); j--; }else if(StrSrc[j]=='R') { swap(StrSrc,i,j); i++; }else if ((StrSrc[i]=='G')&&(StrSrc[j]=='G')) { // bool bRet=StringSortGG(StrSrc,i,j); if (!bRet) { return true; } } } return true;}int main(void){ std::string StrSrc="RGBBGRRBRGRBBG"; StringSort(StrSrc);}
- )RGB排序,一个字符串,里面只有三种字符R G B,所有的R都在G的前面,所有的G都在B的前面。将给定字符串按照此规律排序。要求不允许用辅助空间,复杂度控制在O(N)。遍历一遍就排好序。
- RGB排序,一个字符串,里面只有三种字符R G B,所有的R都在G的前面,所有的G都在B的前面。将给定字符串按照此规律排序。要求不允许用辅助空间,复杂度控制在O(N)。
- 【解法】给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。 要求:空间复杂度是O(1),且只能遍历一次字符串。
- 给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。
- 给定一个字符数组,存储有R、G、B字符,将所有字符按照RGB顺序排序
- 给定一个数组,该数组存贮R,G,B三种字符,将该数组按RGB顺序排序,不能使用辅助内存空间,且只能遍历数组一次。
- 将数组排序,数组中所有的负整数出现在正整数前面(时间复杂度为 O(n), 空间复杂度为 O(1)).
- 将数组中所有小于或等于0的元素都放在数组前面,大于0的元素放在数组后面。要求时间复杂度为o(n)
- Python中国在字符串前面加u,r,b的含义
- Python 在字符串前面加'r'的用法
- python字符串前面加u,r,b的含义
- python字符串前面加u,r,b的含义
- python字符串前面加u,r,b的含义
- python字符串前面加u,r,b的含义
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序(创新工场)
- 一个字符数组,里面的字符可能是a-z、A-Z、0-9.现在要求对数组进行排序,要求所有小写字符放在最前面,所有大写字符放在中间,所有数字放在最后,而且各部分内部分别有序。
- 判断一个字符串的所有字符是否都在另一个字符串中
- 数据库软件有哪些
- 英尺到米的换算
- Android应用开发揭秘的第3个程序3_2_Content_Provider修改版和高仿版的源码注释
- 2012/11/5——2012/11/9 周记
- ORA-38856: Cannot mark instance UNNAMED_INSTANCE_2 (redo thread 2) as enabled
- )RGB排序,一个字符串,里面只有三种字符R G B,所有的R都在G的前面,所有的G都在B的前面。将给定字符串按照此规律排序。要求不允许用辅助空间,复杂度控制在O(N)。遍历一遍就排好序。
- 如何注册 MSDN AA
- ORA-02030 WHEN GRANTING SELECT ON V$ VIEW
- ios 状态栏 覆盖自定义View
- expdp/impdp 详细参数解释
- 复杂多目录的Makefile模板及示例
- unsigned int与int相加的问题
- 开发记事
- 【说说网络流的那些事】网络流基础知识Ver0.1(算法篇)