0
点赞
收藏
分享

微信扫一扫

蓝桥杯OJ 算法训练 文章翻转 多种语言解法 C/C++/Python/Java

紫荆峰 2022-10-26 阅读 108


蓝桥杯OJ 算法训练 文章翻转 多种语言解法 C/C++/Python/Java

  大家好,我叫亓官劼(qí guān jié )

题目

资源限制

时间限制:1.0s 内存限制:128.0MB

问题描述

输入一段英文,不含标点,将这一段英文以单词为单位倒序输出

输入格式

一段英文(段内不含换行),以换行符结尾。

输出格式

一段英文(段内不含换行),以换行符结尾。

样例输入

aab TTR bbc loV DDE Znr CCD

样例输出

CCD Znr DDE loV bbc TTR aab

数据规模和约定

60%的数据保证单词长度不超过20,字符长度不超过10^3
  100%的数据保证单词长度不超过105,字符长度不超过106

题解一:C/C++解法

  这题的话题目给的需求很明确,并不复杂的要求。给我们一行字符串,以换行符结束,让我们将这段字符串以单词为单位进行倒序输出。这里面不包含标点,所以就只有以空格来分割我们的单词,但是我们的C++中并没有split函数可以使用,所以我们就得自己进行处理了。对于输入的字符串进行遍历,如果不是空格,则收集起来,如果是空格,且收集的字符串的长度大于0,则我们把收集的字符串就是一个单词,我们把这个单词存放在​​vector​​​中。全部获取完之后,我们把我们存储单词的​​vectord​​倒序输出即可。

完整的题解代码为:

#include <iostream>
#include <vector>
using namespace std;

int main(){
string store = "";
getline(cin,store);
vector<string> word;
int length = store.length();
string temp = "";
// cout<<temp.length();
for(int i = 0; i < length; i++){
if(store[i] != ' '){
temp += store[i];
} else{
if(temp.length() > 0){
word.push_back(temp);
temp = "";
}
}
}
if(temp.length() > 0){
word.push_back(temp);
temp = "";
}
int num = word.size();
for(int i = num-1; i >= 0; i--){
cout<<word[i]<<" ";
}
return 0;
}

题解二:Python解法

  这题如果我们使用Python来进行解题就非常的简单了,因为Python有自带的split,我们只需要将它拆分,倒序输出即可,不需要我们手动的进行拆分了,所以我们的Python解法非常的简单,仅需4行代码。

完整的代码为:

store = input()
words = store.split(' ')
for word in words[::-1]:
print(word,end=' ')

题解三:Java解法

  想了想,既然Python都写了,那么Java也顺便写一下解法吧!java也是有split函数的,所以我们时间将字符串以空格为分隔符进行拆开,然后输出即可。

完整代码如下:

import java.util.Scanner;

public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String store = scanner.nextLine();
String words[] = store.split(" ");
int length = words.length;
for(int i = length-1; i >= 0; i--)
System.out.print(words[i]+" ");
}
}

  大家好,我叫亓官劼(qí guān jié )



举报

相关推荐

0 条评论