您的位置:首页 > 科技 > IT业 > html导航栏模板_安卓软件开发需要学什么软件_seo现在还有前景吗_软件培训班学费多少

html导航栏模板_安卓软件开发需要学什么软件_seo现在还有前景吗_软件培训班学费多少

2024/12/23 4:22:43 来源:https://blog.csdn.net/m0_73639126/article/details/143134857  浏览:    关键词:html导航栏模板_安卓软件开发需要学什么软件_seo现在还有前景吗_软件培训班学费多少
html导航栏模板_安卓软件开发需要学什么软件_seo现在还有前景吗_软件培训班学费多少

这道题之前一直不会做,明白他是什么意思,但是找不到方法或者方法过于繁琐

方法1:

这是我在力扣评论区看到的方法,太精彩了。

虽然我实现起来效率并不高,可能是我代码的问题,但是他的思路很巧妙。

字符串的规律是假如numRows是4
那1234321234321……
将数字一样的拿出来拼接,最终拼在一起

这是我根据这个思路写的代码,有点丑陋

class Solution {public  String convert(String s, int numRows) {if(numRows < 2) return s;List<StringBuilder>list=new ArrayList<>(numRows);char[] array = s.toCharArray();for (int i = 0; i < numRows; i++) {list.add(new StringBuilder());}int flag=-1;//1是向下  -1是向上int index=0;for (int i = 0; i < array.length; i++) {char c = array[i];StringBuilder sb = list.get(index);sb.append(c);if(index==0||index==numRows-1){//因为index是从0开始的,所以到了numRow-1,不从1开始的原因是list的索引也是从0开始的flag=-flag;}index+=flag;}StringBuilder result=new StringBuilder();for (StringBuilder stringBuilder : list) {result.append(stringBuilder.toString());}return result.toString();}
}

方法2:

这个是官方题解,结合他的图也很好理解。特别是他的flag设计得太妙了。
直接使用index+-flag,免去了一次判断

class Solution {public  String convert(String s, int numRows) {if(numRows < 2) return s;List<StringBuilder>list=new ArrayList<>(numRows);char[] array = s.toCharArray();for (int i = 0; i < numRows; i++) {list.add(new StringBuilder());}int flag=-1;//1是向下  -1是向上int index=0;for (int i = 0; i < array.length; i++) {char c = array[i];StringBuilder sb = list.get(index);sb.append(c);if(index==0||index==numRows-1){//因为index是从0开始的,所以到了numRow-1,不从1开始的原因是list的索引也是从0开始的flag=-flag;}index+=flag;}StringBuilder result=new StringBuilder();for (StringBuilder stringBuilder : list) {result.append(stringBuilder.toString());}return result.toString();}
}

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com