C++怎么实现字型转换字符串


这篇文章主要介绍“C++怎么实现字型转换字符串”,在日常操作中,相信很多人在C++怎么实现字型转换字符串问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C++怎么实现字型转换字符串”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!Example 1:Input: s = “PAYPALISHIRING”, numRows = 3
Output: “PAHNAPLSIIGYIR”Example 2:Input: s = “PAYPALISHIRING”, numRows =4
Output:”PINALSIGYAHRPI”
Explanation:P I N
A L S I G
Y A H R
P I这道题刚开始看了半天没看懂是咋样变换的,上网查了些资料,终于搞懂了,就是要把字符串摆成一个之字型的,比如有一个字符串 “0123456789ABCDEF”,转为 zigzag 如下所示:当 n = 2 时:0 2 4 6 8 A C E1 3 5 7 9 B D F当 n = 3 时:0 4 8 C1 3 5 7 9 B D F2 6 A E当 n = 4 时:0 6 C1 5 7 B D2 4 8 A E3 9 F可以发现,除了第一行和最后一行没有中间形成之字型的数字外,其他都有,而首位两行中相邻两个元素的 index 之差跟行数是相关的,为 2*nRows – 2, 根据这个特点,可以按顺序找到所有的黑色元素在元字符串的位置,将他们按顺序加到新字符串里面。对于红色元素出现的位置(Github 上可能无法正常显示颜色,请参见博客园上的帖子)也是有规律的,每个红色元素的位置为 j + 2 x numRows-2 – 2 x i, 其中,j为前一个黑色元素的 index,i为当前行数。 比如当 n = 4 中的那个红色5,它的位置为 1 + 2 x 4-2 – 2 x 1 = 5,为原字符串的正确位置。知道了所有黑色元素和红色元素位置的正确算法,就可以一次性的把它们按顺序都加到新的字符串里面。代码如下:解法一:若上面解法中的规律不是很好想免费云主机域名的话,我们也可以用下面这种更直接的方法来做,建立一个大小为 numRows 的字符串数组,为的就是把之字形的数组整个存进去,然后再把每一行的字符拼接起来,就是想要的结果了。顺序就是按列进行遍历,首先前 numRows 个字符就是按顺序存在每行的第一个位置,然后就是 ‘之” 字形的连接位置了,可以发现其实都是在行数区间 [1, numRows-2] 内,只要按顺序去取字符就可以了,最后把每行都拼接起来即为所求,参见代码如下:解法二:到此,关于“C++怎么实现字型转换字符串”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注百云主机网站,小编会继续努力为大家带来更多实用的文章!

相关推荐: vue插件怎么自定义

本篇内容主要讲解“vue插件怎么自定义”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“vue插件怎么自定义”吧!1.首先,在vue-cli中创建一个vue.js项目;vue create project-name2.…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 02/10 20:38
Next 02/10 21:27

相关推荐