| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 930 人关注过本帖
标题:求助一道题目:有一些A、C、M组成的字符串,将其按字符A排序。
只看楼主 加入收藏
dengdaisky
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2010-4-11
结帖率:54.55%
收藏
 问题点数:0 回复次数:6 
求助一道题目:有一些A、C、M组成的字符串,将其按字符A排序。
有一些A、C、M组成的字符串,将其按字符A排序。

输入

一组测试数据,输入数据由若干行组成,每行是字符A、C或M组成的字符串。

输出

对所有输入的数据,先按字符A的个数进行升序排序,如果字符A的数量相等,再按出现的先后顺序排序,每行输出一个字符串。

样例输入

ACM
MCA
AACAAMMM
AACCMM
CMAAMMMMMM
AAA

样例输出

ACM
MCA
AACCMM
CMAAMMMMMM
AAA
AACAAMMM
想了半天都做不来
这是我的博客,里面有一些免费经典的C++视频教程,大家可以去参观;
http://www.
我的博客地址:
http://www.

[ 本帖最后由 dengdaisky 于 2013-3-19 12:51 编辑 ]
搜索更多相关主题的帖子: 字符串 博客 经典的 
2013-03-19 12:39
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
先把求 ‘A’个数的函数写出来吧


[fly]存在即是合理[/fly]
2013-03-19 12:45
dengdaisky
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2010-4-11
收藏
得分:0 
回复 2楼 azzbcc
我不会求啊,题目都看不怎么懂,无法下手
2013-03-19 12:51
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
那先不管题目, 求一个字符串中 某个字符的个数 怎么求?


[fly]存在即是合理[/fly]
2013-03-19 12:59
dengdaisky
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2010-4-11
收藏
得分:0 
回复 4楼 azzbcc
假设字符串是str,某一个字符是c,数量是n
for(n = i = 0; str[i]; i++)
n += (str[i] == c);
2013-03-19 13:15
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
然后在按 字符‘A’的个数排序,就是这样、、


[fly]存在即是合理[/fly]
2013-03-19 13:24
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
抛砖引玉吧,提供一个没有效率优化的示范代码

若你的编译器支持C++标准,比如gcc4.7.2,可以用如下代码
程序代码:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
using namespace std;

int main()
{
    vector<string> buf = vector<string>( istream_iterator<string>(cin), istream_iterator<string>() );
    std::stable_sort( buf.begin(), buf.end(), []( const string& a, const string& b ) { return count(a.begin(),a.end(),'A') < count(b.begin(),b.end(),'A'); } );
    copy( buf.begin(), buf.end(), ostream_iterator<string>(cout,"\n") );

    return 0;
}

若你的编译器对C++标准支持不那么好,比如VC++9.0,可以将 lambda函数 改为 函数对象,代码如下
程序代码:
#include <iostream>
#include <algorithm>
#include <iterator>
#include <vector>
#include <string>
using namespace std;

struct foo {
    bool operator()( const string& a, const string& b ) const {
        return count(a.begin(),a.end(),'A') < count(b.begin(),b.end(),'A');
    }
};

int main()
{
    vector<string> buf = vector<string>( istream_iterator<string>(cin), istream_iterator<string>() );
    std::stable_sort( buf.begin(), buf.end(), foo() );
    copy( buf.begin(), buf.end(), ostream_iterator<string>(cout,"\n") );

    return 0;
}

2013-03-19 14:54
快速回复:求助一道题目:有一些A、C、M组成的字符串,将其按字符A排序。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.039473 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved