数据结构与算法——字典序最小问题(用string类实现)
来源:互联网 发布:淘宝上签证怎么办理 编辑:程序博客网 时间:2024/05/01 22:08
思路:将源字符串str反转得到 rstr;然后比较两个字符串的大小,比如,如果str小,则将str的第一个字符加入min_str的后面,并将str的第一个字符删除;直到min_str的长度等于str;
主要是学习string类的成员函数:begin(), end(), rbegin(), rend(), front(), erase(), push_back();
linux代码以及运行结果:
/************************************************************************* > File Name: best_cow_line.cpp > Author: > Mail: > Created Time: 2015年12月13日 星期日 16时51分44秒 ************************************************************************/#include<iostream>#include <string>using namespace std;/*输入数据*/int input_data(int * len, string & str){cout << "string length: ";cin >> *len;cout << "string: ";cin >> str;return 0;}/*该函数仅仅是用于验证输入的数据是否正确*/void output_data(int *len, string & str){cout << "string length is " << *len << endl;cout << "string is " << str << endl;}/*得到最小的字符串*/void solve(int *len, string & str, string & min_str){string rstr(str.rbegin(), str.rend());//cout << "rstr is " << rstr << endl;int num = *len;while(num > 0){if(str < rstr){ //如果求最大字符串,应该为str > rstr//min_str.push_back(str.front());min_str.push_back(*str.begin());str.erase(str.begin());}else{min_str.push_back(*rstr.begin());rstr.erase(rstr.begin());}num--;}}int main(){int str_len = 0;string str;string min_str;int ret = 0;ret = input_data(&str_len, str);if(ret < 0){cout << "input the data error" << endl;}solve(&str_len, str, min_str);cout << "min str is: " << min_str << endl;//cout << "output the data: " << endl;//output_data(&str_len, str);return 0;}
windows系统下:
/*************************************************************************> File Name: best_cow_line.cpp> Author:> Mail:> Created Time: 2015年12月13日 星期日 16时51分44秒************************************************************************/#include<iostream>#include <string>using namespace std;/*输入数据*/int input_data(int * len, string & str){cout << "string length: ";cin >> *len;cout << "string: ";cin >> str;return 0;}/*该函数仅仅是用于验证输入的数据是否正确*/void output_data(int *len, string & str){cout << "string length is " << *len << endl;cout << "string is " << str << endl;}/*得到最小的字符串*/void solve(int *len, string & str, string & min_str){string rstr(str.rbegin(), str.rend());//cout << "rstr is " << rstr << endl;int num = *len;while (num > 0){if (str < rstr){ //如果求最大字符串,应该为str > rstrmin_str.push_back(str.front());//在linux下面没有该c++11加入的函数//min_str.push_back(*str.begin());str.erase(str.begin());}else{min_str.push_back(rstr.front());//min_str.push_back(*rstr.begin());rstr.erase(rstr.begin());}num--;}}int main(){int str_len = 0;string str;string min_str;int ret = 0;ret = input_data(&str_len, str);if (ret < 0){cout << "input the data error" << endl;}solve(&str_len, str, min_str);cout << "min str is: " << min_str << endl;//cout << "output the data: " << endl;//output_data(&str_len, str);system("pause");return 0;}
0 0
- 数据结构与算法——字典序最小问题(用string类实现)
- 数据结构与算法分析笔记与总结(java实现)--字符串9:拼接最小字典序练习题
- map<string,vector<string>>两种字典排序 ——数据结构与算法分析上的
- 贪心算法——字典序最小问题
- 学习JavaScript数据结构与算法(六)——字典
- 数据结构与C语言实现(十一)——图(下):最小生成树与Prim与Kruskal算法
- 算法与数据结构学习之——简单的字典树实现
- 数据结构与算法-最小生成树—普里姆算法
- js数据结构与算法——集合,字典,哈希
- 算法与数据结构基础2:C++String类的实现
- 数据结构与算法分析——字谜问题实现
- 【数据结构与算法】String 的简单实现
- 字典序最小问题
- 字典序最小问题
- 字典序最小问题
- 字典序最小问题
- 字典序最小问题
- JS数据结构与算法--字典
- 并查集uva1160 - X-Plosives
- NAO机器人之开发环境搭建
- 用视图控件 实现简单的跑马灯
- 如何创建html文件
- C/C++编译和链接过程详解 (重定向表,导出符号表,未解决符号表)
- 数据结构与算法——字典序最小问题(用string类实现)
- Leetcode: Range Sum Query - Mutable
- Servlet3.0学习总结(一)——使用注解标注Servlet-2
- 信道编码——线性分组码
- EasyDarwin EasyClient开源流媒体播放器,支持多窗口显示
- 关于IO流制作简单的复制张贴功能
- Android菜单的使用
- 玩转四旋翼无人机(DJI SDK 使用)
- KJFrameForAndroid