字符串变形 C++

6 篇文章 0 订阅

目录

题目描述

思路分析

AC代码

题目描述

对于一个长度为 n 字符串,我们需要对它做一些变形。

首先这个字符串中包含着一些空格,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。

比如"Hello World"变形后就变成了"wORLD hELLO"。

数据范围: 1\le n \le 10^61≤n≤106 , 字符串中包括大写英文字母、小写英文字母、空格。

进阶:空间复杂度 O(n)O(n) , 时间复杂度 O(n)O(n)

输入描述:

给定一个字符串s以及它的长度n(1 ≤ n ≤ 10^6)

返回值描述:

请返回变形后的字符串。题目保证给定的字符串均由大小写字母和空格构成。

思路分析

要看清楚题目说的是将单个单词里面的字母顺序,而不是将这个字符串里面的单词的顺序颠倒。

因为C++的算法库里面有reverse函数,它的作用就是将整个字符串的字符顺序颠倒过来,所以我的思路比较大众化,为将单词里面的字母顺序颠倒,首先用reverse函数将整个字符串的字符顺序颠倒,然后,用空格作为字符串划分单词的判断点,对每一个由空格隔开的部分(即单词)再次使用reverse函数颠倒。

为了方便,我尽可能地调用库函数,像判断字母大小写,字符串的长度之类的。

我里面还用到了auto变量,auto变量属实好用。

AC代码

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main(){
	string s;
	int n,i,j;
	getline(cin,s);
	cin>>n;
	for(auto& element:s){
		if(isupper(element))
		element+=32;
		else if(islower(element))
		element-=32;
	}
	reverse(s.begin(),s.end());
	for(i=0;i<n;i++){
		for(j=i;j<n;j++)
		if(s[j]==' ')
		break;
		reverse(s.begin()+i,s.begin()+j);
		i=j;
	}
	cout<<s;
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
你可以使用 C++ 的文件流来读取 txt 文件中的字符串。以下是一个简单的例子: ```c++ #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream inputFile("example.txt"); // 打开文件 string line; if (inputFile.is_open()) { while (getline(inputFile, line)) { // 逐行读取 cout << line << endl; } inputFile.close(); // 关闭文件 } return 0; } ``` 在上面的例子中,我们首先使用 `ifstream` 类来打开一个名为 `example.txt` 的文件。然后我们使用 `getline()` 函数逐行读取文件中的内容,并将其存储在 `string` 类型的 `line` 变量中。最后,我们输出每一行的内容。 如果你想读取整个文件的内容而不是逐行读取,你可以使用 `getline()` 函数的变形: ```c++ #include <iostream> #include <fstream> #include <string> using namespace std; int main() { ifstream inputFile("example.txt"); // 打开文件 string fileContent; if (inputFile.is_open()) { string line; while (getline(inputFile, line)) { fileContent += line + "\n"; // 将每一行的内容加入到 fileContent 变量中 } inputFile.close(); // 关闭文件 } cout << fileContent; return 0; } ``` 在上面的例子中,我们使用一个 `string` 类型的变量 `fileContent` 来存储整个文件的内容。在读取每一行时,我们将其加入到 `fileContent` 变量中,并在每一行的末尾添加一个换行符。最后,我们输出 `fileContent` 变量的内容。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MaolinYe(叶茂林)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值