LeetCode之路——ZigZag Conversion
来源:互联网 发布:免费翻墙安卓软件 编辑:程序博客网 时间:2024/05/21 15:01
题目要求:将一个字符串按照锯齿形输出。
图片来自别处。
可以发现有这样的规律:res[i][j]=s.charAt(2*(j-1)+i-1);
首先要考虑特殊情况。
贴上代码:
package leetcode;public class ZigZagConversion { public static void main(String[] args) { // TODO Auto-generated method stub String s="PAYPALISHIRING"; Solution_Zigzig sol = new Solution_Zigzig(); System.out.println(sol.convert(s, 3)); }}class Solution_Zigzig { public String convert(String s, int numRows) { if(numRows==1)//当一行输出时直接返回 return s; if(s.length()<numRows)//当字符串长度小于行数时,直接返回 return s; int i=1,j=1;//i为行数,j为列数 int len =s.length();//len为字符串长度,当经常需要调用某个函数,而这个函数的返回值不变时,可以只调用一次用一个变量接受,以减少算法复杂度————来自《CSAPP》 boolean flag = false;//当flag为true时,i--,否则i++ String solu="";//定义按照锯齿形输出接受字符串 char[][] res=new char[numRows+1][len+1];//先定义一个字符数组用以接受s返回的字符 for(i=1;i<=numRows;i++)//初始化字符数组 for(j=1;j<=len;j++) { res[i][j]=' '; } i=1;//重置行数列数 j=1; while(2*(j-1)+i-1<len)//当字符串还有变量时循环 { res[i][j]=s.charAt(2*(j-1)+i-1);//锯齿形规律 //System.out.print(res[i][j]+" "); if((j-1)%(numRows-1)!=0) j++; if((++i)>numRows)//当行数越界时增加列数并且将行数增量改为-1 { i--; j++; //--i; flag=true; } else { i--; //flag=false; } if(i<1)flag=false;//当i负溢出时,将i增量改为+1; if(flag) { i--; } else i++; } //s=String.valueOf(res); for(i=1;i<=numRows;i++)//遍历字符数组 { for(j=1;j<len;j++) { //System.out.print("res["+i+"]["+j+"]="+res[i][j]+" "); if(res[i][j]!=' ')//若字符数组变量不为空格时,将之加入字符串 solu+=res[i][j]; } //System.out.println(); } //System.out.println("solu="+solu); return solu; }}
总结:此题难度不大,但要耐心细心的发现规律。研一的CSAPP课程确实是一门好课!
0 0
- LeetCode之路——ZigZag Conversion
- leetcode—zigzag conversion
- LeetCode 之 ZigZag Conversion — C 实现
- LeetCode——ZigZag Conversion
- leetcode——ZigZag Conversion
- ZigZag Conversion —— leetcode
- leetcode之ZigZag Conversion
- LeetCode之ZigZag Conversion
- leetcode之ZigZag Conversion
- LeetCode之ZigZag Conversion
- 【Leetcode】之ZigZag Conversion
- leetcode之ZigZag Conversion
- leetcode之ZigZag Conversion
- LeetCode 之 ZigZag Conversion
- leetcode之路006 ZigZag Conversion
- LeetCode进阶之路(ZigZag Conversion)
- leetcode学习之路-ZigZag Conversion
- LeetCode之6---ZigZag Conversion
- Magento编译模式
- main()方法里面的String args[]
- java获取前一天时间
- Scala01入门
- [转载]EasyPlayer实现直播抓拍
- LeetCode之路——ZigZag Conversion
- web移动端Fixed在Input获取焦点时ios下产生的BUG及处理
- ionic ——— 下拉刷新及上拉加载
- 第二章简答题图书馆管理信息
- 值不能为 null。参数名: source
- cordova-plugin-file 文件操作整理(一)
- Markdown 用法
- oj刷题--2852二分查找
- 第三章课后简答题