左旋转字符串程序

字符串左旋转操作的实现与优化

一 问题描述

定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转2 位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。

二 解题思路

定义一种字符串转置操作XT--将字符串反转可以验证(XT)T=X     (XY)T=YTXT    原有字符串为XY,左移后的字符串应该是YX 那么有(XTYT)T=(YT)T(XT)T=YX

三 代码

/*
This is a free Program, You can modify or redistribute it under the terms of GNU
*Description:字符串转置的应用--
*定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字
*符串abcdef 左旋转2 位得到字符串cdefab。请实现字符串左旋转的函数。要求时间对长度
*为n 的字符串操作的复杂度为O(n),辅助内存为O(1)。

*Language: C++
*Development Environment: VC6.0
*Author: Wangzhicheng
*E-mail: 2363702560@qq.com
*Date: 2012/12/6
*/

/*
定义一种字符串转置操作XT--将字符串反转
可以验证(XT)T=X (XY)T=YTXT
原有字符串为XY,左移后的字符串应该是YX
那么有(XTYT)T=(YT)T(XT)T=YX
*/
#include <iostream>
#include <cstdlib>
#include <string>
#include <algorithm>

using namespace std;

class Solution {
private:
	string str;
	void Reverse(string::iterator beg,string::iterator end) {
		while(beg!=end) {
			swap(*beg++,*--end);
		}
	}
public:
	Solution(const string &input) {
		str=input;
	}
	void JustDoIt(int n) {
		if(n<0) {
			cerr<<"参数有误!"<<endl;
			exit(1);
		}
		if(n>str.size()) n-str.size();
		Reverse(str.begin(),str.begin()+n);  //XT
		Reverse(str.begin()+n,str.end());    //YT
		Reverse(str.begin(),str.end());      //(XTYT)T
	}
	void show() {
		cout<<"左旋后的字符串是:"<<str<<endl;
	}
};

void main() {
	Solution s("Hello world, I am wangzhicheng");
	s.JustDoIt(2);
	s.show();
}


 

四 测试:

 

MATLAB代码实现了一个基于多种智能优化算法优化RBF神经网络的回归预测模型,其核心是通过智能优化算法自动寻找最优的RBF扩展参数(spread),以提升预测精度。 1.主要功能 多算法优化RBF网络:使用多种智能优化算法优化RBF神经网络的核心参数spread。 回归预测:对输入特征进行回归预测,适用于连续值输出问题。 性能对比:对比不同优化算法在训练集和测试集上的预测性能,绘制适应度曲线、预测对比图、误差指标柱状图等。 2.算法步骤 数据准备:导入数据,随机打乱,划分训练集和测试集(默认7:3)。 数据归一化:使用mapminmax将输入和输出归一化到[0,1]区间。 标准RBF建模:使用固定spread=100建立基准RBF模型。 智能优化循环: 调用优化算法(从指定文件夹中读取算法文件)优化spread参数。 使用优化后的spread重新训练RBF网络。 评估预测结果,保存性能指标。 结果可视化: 绘制适应度曲线、训练集/测试集预测对比图。 绘制误差指标(MAE、RMSE、MAPE、MBE)柱状图。 十种智能优化算法分别是: GWO:灰狼算法 HBA:蜜獾算法 IAO:改进天鹰优化算法,改进①:Tent混沌映射种群初始化,改进②:自适应权重 MFO:飞蛾扑火算法 MPA:海洋捕食者算法 NGO:北方苍鹰算法 OOA:鱼鹰优化算法 RTH:红尾鹰算法 WOA:鲸鱼算法 ZOA:斑马算法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值