字符串大X形变换

博客详细介绍了如何实现将字符序列按X形排列并从左到右打印的算法,重点在于理解对称性和按列的打印顺序。通过分析X序列的特性,博主提出了将输入序列划分为多个X形,并逐行打印的解决方案,特别处理了不完整X形的情况。

好像是华为8.12的一道笔试题,听朋友说起所以记录一下自己的解题思路

题目的大概意思是:给定一个字符序列和一个奇数N,将输入的字符序列按”X"型排序,N表示排成"X"型的列数,要求从左到右打印出该字符序列…

比如给定 ABCEDFGHIJKLMNOPQ ,和一个奇数N = 5,那么排成的型状如下:
在这里插入图片描述
则从左到右按列的打印顺序为 A H O C F J M Q E L D G K N B I P 。

思路

很明显是按规律打印数组。
首先单看一个完整的X型序列,完整的X序列的长度为:L = 2 * N - 1
在这里插入图片描述
能够发现是一个对称的图形,意味这在数组中通过索引就能找到当前位置关于中心对称的字符,如 当前遍历的位置 i 为 1,对应的的字符 为 B , B 关于中心对称的位置为 L- i -1,即为 7 , 对应的字符为 H在这里插入图片描述
因此按输入顺序循环遍历序列,当索引位置(i %2)== 1 ,打印其对称字符,否则打印原字符 就可以得到按列的打印顺序:
在这里插入图片描述
因此我们将输入序列划分成M个X 型(注意到,不完整的X型也算一个),从输入的整个序列中找出组成 第 j 个X型的序列:
开始下标start = (j -1)* ( L - 2)
结束下标end = 输入序列长度 > start + L ? start + L : 输入序列长度
在这里插入图片描述
之后按照X型的行数, 和划分X型的顺序,即打印第一个X型的第一行,第二个X型的第一行,第三个X型的第一行 ,再打印第一个X型的第二行,第二个X型的第二行,第三个X型的第二行…即可获得输入序列对应的输入序列。

值得注意的是第一个X型的最后一个元素是第二个X型的前两个元素,第二个X型的的最后两个元素是第三个X型的前两个元素,以此类推,因此从第二个X型开始,如果打印的真正位置是0和1则不用打印

实现
public class Main {
   
   
    public static void main(String[] args) {
   
   
        char[] chs = {
   
   'A','B','C','D','E','F','G','H','I','J','K','L','M','N',<
1.一种电力设备变检测方法,其特征在于,包括如下具体步骤: 步骤S100,获取待检测电力设备的检测数据,所述检测数据包括电力设备的振动速度和振动幅度,将所述待检测电力设备对应的检测ID请求输入对照电力设备库中,所述对照电力设备库输出所述待检测电力设备的对照数据,将所述检测数据和对照数据进行图像合成,得到待检测运行图像和对照运行图像; 步骤S200,将待检测运行图像和对照运行图像输入哈希模中,输出对照哈希码和检测哈希码; 步骤S300,计算所述对照哈希码和检测哈希码的汉明距离,根据所述汉明距离判断所述待检测电力设备的变程度。 步骤S400,当所述变程度于预设定的变阈值时,以所述待检测电力设备为起始点,建立变传播链来判断邻近电力设备受到的变影响小。 2. 如权利要求1所述的一种电力设备变检测方法,其特征在于:步骤S100具体包括: 步骤S101,通过分布式传感器网络实时采集所述待检测电力设备的振动速度和振动幅度,对所述采集到的检测数据进行数据预处理; 所述数据预处理具体包括滤波降噪处理、特征提取和归一化处理,所述滤波降噪处理的实施方式为小波变换,所述特征提取为提取所述小波变换后的检测数据的时域均值、方差和频域FFT能量谱; 步骤S102,将所述待检测电力设备对应的检测ID请求输入对照电力设备库中,所述对照电力设备库输出所述待检测电力设备的对照数据,所述对照数据为正常电力设备状态的对照振动速度和对照振动幅度,提取所属对照振动速度和对照振动幅度的对照时域均值、对照方差和对照频域FFT能量谱; 步骤S103,将所述时域均值、方差和频域FFT能量谱整合成待检测运行图像,将对照时域均值、对照方差和对照频域FFT能量谱整合成对照运行图像。 3.如权利要求2所述的一种电力设备变检测方法,其特征在于:步骤S200具体包括: 步骤S201,对待检测图像和对照运行图像进行图像标准化处理,所述图像标准化处理包括时域对齐、多通道归一化和局部增强; 所述时域对齐为对待检测图像和对照运行图像的时域通道进行动态时间规整匹配,消除采样时间差异导致的相位偏移; 所述多通道归一化为对待检测图像和照运行图像的时域通道、频域通道和时频通道分别进行统计归一化,具体包括: 时域通道:减去该设备历史均值,除以标准差 ; 频域通道:对数压缩后按最能量值归一化至 ; 时频通道:小波系数按尺度归一化; 步骤S202,所述哈希模的构建步包括: 采用轻量化卷积神经网络,所述轻量化卷积神经网络包括输入层、特征提取层和哈希层; 所述输入层用于接收64×64×3的三通道图像 所述特征提取层为4级下采样结构,每级包含卷积、残差连接和空间注意力模块; 所述哈希层用于输出256维连续向量,通过符号函数二值化为并输出256位二值哈希码; 采用三个损失函数约束所述哈希模,三个损失函数包括相似性约束、稀疏约束和正交约束,得到训练好的哈希模; 4. 如权利要求3所述的一种电力设备变检测方法,其特征在于:步骤S300具体包括: 步骤S301,将预处理后的待检测图像和对照运行图像分别输入训练后的哈希模,得到对照哈希码和检测哈希码,利用汉明距离公式计算所述对照哈希码和检测哈希码的汉明距离,所述汉明距离公式的数学表达式为: 汉明距离=差异位数/256; 其中,差异位数表示所述对照哈希码和检测哈希码逐位对比时对应位数不一致时的总位数; 步骤S302,量化所述汉明距离和对应的变程度,具体方法包括: 收集三种变等级的电力设备的待检测图像图像,所述三种变等级包括轻微变和中度变和严重变图像; 将三种变等级的电力设备的待检测图像图像输入所述训练后的哈希模,得到对应的第一类哈希码、第二类哈希码和第三类哈希码; 分别计算所述第一类哈希码、第二类哈希码和第三类哈希码与所述对照哈希码的汉明距离,得到第一类哈希码汉明距离、第二类汉明距离和第三类汉明距离; 采用高斯混合模对所述第一类哈希码汉明距离、第二类汉明距离和第三类汉明距离进行聚类,得到一类汉明距离阈值和二类汉明距离阈值。 5.如权利要求4所述的一种电力设备变检测方法,其特征在于:步骤S400具体包括: 步骤S401,获取所述待检测电力设备的汉明距离,将所述汉明距离与一类汉明距离阈值和二类汉明距离阈值进行比较,得到所述待检测电力设备的变等级,建立对应变等级的变影响路径,所述变影响路径包括一类变传播路径、二类变传播路径和三类变传播路径; 步骤S402,设定各个变影响路径的传播初始参数和初始路径,所述传播初始参数包括最传播级数和单步衰减系数; 所述一类变传播路径的最传播级数为2级,单步衰减系数为0.7; 所述二类变传播路径的最传播级数为3级,单步衰减系数为0.5; 所述三类变传播路径的最
07-05
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值