栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

蓝桥杯C++ 算法训练 文章翻转

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

蓝桥杯C++ 算法训练 文章翻转

蓝桥杯C++ 算法训练 文章翻转

问题描述
  输入一段英文,不含标点,将这一段英文以单词为单位倒序输出
输入格式
  一段英文(段内不含换行),以换行符结尾。
输出格式
  一段英文(段内不含换行),以换行符结尾。
样例输入
aab TTR bbc loV DDE Znr CCD
样例输出
CCD Znr DDE loV bbc TTR aab

  • 基本思路
  • 这道题目确实很简单啊,单纯的暴力解题就够了,只需要注意就是空格和最后的回车坐标位置之间的区别
#include 
#include 
#include 
using namespace std;
int main() {
	string  str,output;
	getline(cin, str);
	int length = str.length();
	int n = 0, m = 0;
	for (int i = 0; i < length; i++) {
		if (str[i] == ' ') {
			m = i - 1;
			for (int j = m; j >= n; j--)
				output = str[j] + output;
			n = m + 2;
			output = ' ' + output;
		}
		else if (i == length - 1) {
			m = i;
			for (int j = m; j >= n; j--)
				output = str[j] + output;
		}
	}
	cout << output << endl;
	return 0;
}


其实这里可以看出这个代码还是有很多地方需要改进的,需要使用的内存和时间还是很多的

  • 进一步提升的话,之前的思路是按照顺序的0-length的顺序进行,就需要给最后的输出提供一个变量来储存,但是假如是由length-0这个倒着的顺序来进行计算的,那就没有必要储存这个倒装后的值了,直接进行输出就更加方便
#include 
#include 
#include 
using namespace std;
int main() {
	string str;
	getline(cin, str);
	int length = str.length(), temp = length - 1;
	for (int i = length - 1; i >= 0; i--) {
		if (i == 0 || str[i] == ' ') {
			if (i == 0)
				i = -1;
			for (int j = i + 1; j <= temp; j++)
				cout << str[j];
			cout << " ";
			temp = i - 1;
		}
	}
	return 0;
}


可以和上面的对比看出来差距了,一个只是需要15ms,之前的需要765ms,差距还是很大

  • 其实到之前那一段代码应该已经就算完成目标了,确实没有什么可以挖掘的内容了,但是后来是看了看substr,感觉代码可以更加短一点(虽然应该就是短了2行,本人水平不行,这样应该算是极限了),至少这个方法是省去了上面那段代码的输出部分,前一个输出部分就麻烦用了for循环,但是string里面已经给你设置好了substr截取部分字符串,那就更加方便了
#include 
#include 
#include 
using namespace std;
int main() {
	string str;
	getline(cin, str);
	int length = str.length(), l, temp = length - 1;
	for (int i = length; i >= 0; i--) {
		if (str[i] == ' ' || i == 0) {
			if (i == 0)
				i = -1;
			l = temp - i;
			cout << str.substr(i + 1, l) << " ";
			temp = i - 1;
		}
	}
	return 0;
}


虽然时间,内存一样,但是怎么说呢人比较懒,希望越简单越好

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/529375.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号