NewCode----句子反转

5 篇文章 0 订阅
题目描述

给定一个句子(只包含字母和空格), 将句子中的单词位置反转,单词用空格分割, 单词之间只有一个空格,前后没有空格。 比如: (1) “hello xiao mi”-> “mi xiao hello”

输入描述:

输入数据有多组,每组占一行,包含一个句子(句子长度小于1000个字符)

输出描述:

对于每个测试示例,要求输出句子中单词反转后形成的句子

示例1
输入
hello xiao mi
输出
mi xiao hello
解题思路

因为不知道一行会有多少个单词,所以如果用字符数组进行处理的话要么浪费,要么不够,这里我用了C++中的string类,并用了string类的几个常用函数进行字符串的处理。先识别单词,然后将识别出的单词赋值给str2,将str2在0位置插入str3,最后输出str3,实现逆序输出str1。

涉及函数
strObj.assign(str,x,n);
//将str从x位置开始的n个字符赋值给strObj对象,其中str是一个string对象,或者是一个字符数组

strObj.insert(x,str);
//将str的内容插入到strObj对象中,开始位置是x。其中str是一个string对象,或者是一个字符数组

strObj.insert(x,n,'z');
//从strObj对象的x位置,插入n个字符'z'

strObj.length()
//返回strObj对象中字符的个数。
解题代码:
#include<iostream>
#include<string.h>
using namespace std;

int main(){
    string str1;
    string str2;
    string str3;
    int length;
    int i;
    int word=0;

    getline(cin,str1);
    length=str1.length();

    for(i=0;i<length;i++){
        if(str1[i]==' '||i==length-1){
            str2.assign(str1,i-word,word+1);
            if(i==length-1){
                str2.insert(word+1,1,' ');
            }
            str3.insert(0,str2);
            str2.clear();
            word=0;
        }
        else{
            word++;
        }
    }
    str3.insert(length,1,'\0');
    cout<<str3;
    return 0;
}
首先你需要在你的Spring Boot项目中添加TA-Lib库的依赖: ```xml <dependency> <groupId>com.tictactec</groupId> <artifactId>ta-lib</artifactId> <version>0.4.0</version> </dependency> ``` 然后,你需要创建一个Spring Boot Controller来处理MACD的计算请求。在Controller中,你需要注入一个TA-Lib的实例,并使用它来计算MACD指标。这里是一个简单的例子: ```java import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import com.tictactec.ta.lib.Core; import com.tictactec.ta.lib.MInteger; import com.tictactec.ta.lib.RetCode; @RestController public class MacdController { private final Core taCore; public MacdController(Core taCore) { this.taCore = taCore; } @GetMapping("/macd") public MacdResult calculateMacd( @RequestParam(value = "open") double[] open, @RequestParam(value = "close") double[] close, @RequestParam(value = "high") double[] high, @RequestParam(value = "low") double[] low, @RequestParam(value = "fastPeriod", defaultValue = "12") int fastPeriod, @RequestParam(value = "slowPeriod", defaultValue = "26") int slowPeriod, @RequestParam(value = "signalPeriod", defaultValue = "9") int signalPeriod) { int startIdx = 0; int endIdx = close.length - 1; double[] outMACD = new double[close.length]; double[] outMACDSignal = new double[close.length]; double[] outMACDHist = new double[close.length]; MInteger outBegIdx = new MInteger(); MInteger outNBElement = new MInteger(); RetCode retCode = taCore.macd( startIdx, endIdx, close, fastPeriod, slowPeriod, signalPeriod, outBegIdx, outNBElement, outMACD, outMACDSignal, outMACDHist); if (retCode != RetCode.Success) { throw new RuntimeException("Failed to calculate MACD: " + retCode); } return new MacdResult(outMACD, outMACDSignal, outMACDHist, outBegIdx.value, outNBElement.value); } public static class MacdResult { private final double[] macd; private final double[] signal; private final double[] hist; private final int begIdx; private final int nbElement; public MacdResult(double[] macd, double[] signal, double[] hist, int begIdx, int nbElement) { this.macd = macd; this.signal = signal; this.hist = hist; this.begIdx = begIdx; this.nbElement = nbElement; } // getters } } ``` 这个Controller接受四个数组:开盘价、收盘价、最高价和最低价,以及三个可选参数:快线周期、慢线周期和信号线周期。它返回一个包含MACD指标计算结果的MacdResult对象。 在这个Controller中,我们使用了TA-Lib的Core来计算MACD。我们首先定义了各种输入和输出变量,然后调用Core的macd()方法来计算MACD。最后,我们将计算结果封装在一个MacdResult对象中并返回。 请注意,由于TA-Lib的输入数组必须以最新的数据为第一项,而我们的输入数组是按照时间顺序排列的,因此我们需要将输入数组反转。这可以通过使用Java的Collections.reverse()方法实现。 另外,你可以使用多线程来并行计算MACD以提高计算效率。你可以使用Java 8的Stream API来实现这一点。例如,你可以将输入数组拆分成几个小块,每个小块都在一个独立的线程中计算MACD,最后将结果合并在一起。这将大大提高MACD计算的效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值