igt 三色排序问题
来源:互联网 发布:绿萼梅 知乎 编辑:程序博客网 时间:2024/04/24 11:05
给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。
要求:空间复杂度是O(1),且只能遍历一次字符串。
http://write.blog.csdn.net/postedit 在july大牛的博客中第八节有这个问题的答案。
做题的时候感觉如果要是两个字符排序,就是快排中的一趟,两个指针就搞定了,但是三个字符也想到可能要用三个指针,但是不知道具体怎么移动,看了july的博客恍然大悟,感觉好简单呀,具体思路如下:
一前begin,一中current,一后end,俩俩交换。
1、current遍历,整个数组序列,current指1不动,
2、current指r,与begin交换,而后current++,begin++,
3、current指b,与end交换,而后,current不动,end--。
三个指针分别控制rgb三种颜色的位置,开始begin current指向第一个,end指向最后一个
while( current<=end )
{
if( array[current] ==‘r’ )
{
swap(array[current],array[begin]);
current++;
begin++;
}
else if( array[current] == ‘g’ )
{
current++;
}
else //When array[current] =‘b’
{
swap(array[current],array[end]);
end--;
}
}
之前还看到拓展情况,比如四色,四个字符的该如何处理
- igt 三色排序问题
- 三色旗排序问题
- 三色旗排序问题
- 三色排序(荷兰国旗问题)
- 荷兰国旗问题,三色排序
- 荷兰旗问题(三色旗排序)
- 【刷题之路】三色排序问题
- 三色排序
- 三色排序
- 三色排序
- igt
- 三色问题
- 三色排序问题/(荷兰国旗问题)(C++版)
- 排序14:三色排序
- 三色旗排序
- 牛客网 | 三色排序
- Sort Colors 三色排序
- 三色球排序
- 双向队列(动态数组实现)
- apr动态加载.dll和.so
- 图解SQL的Join(转)
- C# 使用Get,Post,Soap方式调用WebService
- 构造函数调用构造函数
- igt 三色排序问题
- Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用! .
- linux 内存管理 - paging_init 函数
- EasyUI提交表单
- eclipse下编译cocos2dx工程(windows下无cygwin)
- Codeforces Round #145 (Div. 2, ACM-ICPC Rules)
- use_nl
- 模态与非模态
- 窗体的一些主要属性