FTPrep, 6 Zigzag conversion
来源:互联网 发布:ios微信无法连接网络 编辑:程序博客网 时间:2024/06/05 19:37
看到这题,第一反应还是第一次做时,特别长的代码和在纸上反复画图找规律的印象。。。
那显然不是应该出现的解法,但是还是很清楚的思路。参靠了之前的算法,代码和思路瞬间清楚,抓住几个关键点,1分钟搞定,关键还是要有画面感
1,看出重复区的大小是 jump = (2*rowNums - 2),这个是非常显而易见且有用的。visualization的话就是,每一个这个大小的substring 从水平变成了竖直方向,这样从一条线变成了一个矩阵。虽然不是矩阵,但是有明显的规律可循。
2,对于斜着网上走的那一段,任然需要visualization了。这个斜上方走的情况只出现在第一行和最后一行的中间部分,对于index j 的这个往下走的左边,它右边的字母的坐标有没有一个通项公式呢?有的!那就是 j+ jump - 2*i !!! 这个公式非常 犀利,有了这个公式,代码就好写了。
3,对于每一个要作为 index的变量都要用 < len 来限制。
代码清晰入下:
public class Solution { public String convert(String s, int numRows) { int len = s.length(); if(len==0 || numRows<=0) return ""; if(numRows==1) return s; StringBuilder result= new StringBuilder(); int jump = 2*numRows - 2; for(int i=0; i<numRows; i++){ for(int j=i; j<len; j+=jump){ result.append(s.charAt(j)); if(i!=0 && i!=numRows-1 && (j+jump-2*i)<len){ result.append(s.charAt(j+jump-2*i)); } } } return result.toString(); }}
阅读全文
0 0
- FTPrep, 6 Zigzag conversion
- LeetCode 6 - ZigZag Conversion
- LeetCode 6: ZigZag Conversion
- LeetCode(6)ZigZag Conversion
- Leetcode【6】:ZigZag Conversion
- [leetcode 6] ZigZag Conversion
- LeetCode 6 ZigZag Conversion
- LeetCode(6) ZigZag Conversion
- [Leetcode] 6 - ZigZag Conversion
- LeetCode 6:《ZigZag Conversion》
- [leetcode 6] ZigZag Conversion
- LeetCode | #6 ZigZag Conversion
- 6、ZigZag Conversion
- [leetcode] 6 ZigZag Conversion
- leetCode #6 ZigZag Conversion
- leetcode 6 ZigZag Conversion
- 6 ZigZag Conversion
- leetcode-6 ZigZag Conversion
- XP安装序列号
- jqgrid加载本地数据分页
- android GridView 在TV上,上下翻页的时候平滑滑动的实现
- Storm的调度器
- PHP实现一个简易的分页类
- FTPrep, 6 Zigzag conversion
- 免费领取全新30套训练数据集, 包含:“股票数据”、“行人检测常用数据”、“汽车数据集” 点击链接,立即领取: http://mp.weixin.qq.com/s/rm_SBbGSVtrmhJcGUp
- Spring MVC使用ModelAndView进行重定向
- 网站内页长尾词排名如何做seo
- jsp页面:request.getContextPath()报错
- HeaderView、FooterView、刷新、加载更多,支持自定义组装的RecyclerView组件
- iOS开发经验总结(二)
- java中创建String类型对象的两种方式以及在使用equals()和“==”两种方法时的区别
- 扩增子图表解读8网络图:节点OTU或类Venn比较