题目描述:

该开始就输在了理解题意上。。 没搞懂zigzag是什么意思。

查了一些解释终于明白要干什么了。     将一个字符串按照Z字形排列(侧着看);再把结果按行输出。

刚开始的想法是讲字符串按照规则排列在一个二维数组中,然后按序扫描数组输出。时间复杂度为O(n2).

进一步改进,按行数生成n个字符串,按照规则将目标字符串中每个字符存入相应的字符串中,最后将n个字符串连接。省去了扫描二维数组的时间开销。

时间复杂度为O(n)。

代码如下:

class Solution {
public:
string convert(string s, int numRows) {
int l = s.length();
if(numRows <= || l < )
return s;
string* s_str = new string[numRows];
int period = * (numRows - ); for(int i = ; i< l; ++ i)
{
s_str[numRows - - abs(numRows - - (i % period))].push_back(s[i]);
//此处为借鉴的公式;
//自己写的s_str[i%period].push_back(s[i])会出现越界错误。
} string str_result;
for(int i = ; i < numRows; ++ i)
{
str_result.append(s_str[i]);
}
return str_result;
}
};

最新文章

  1. Spark Kill Application
  2. Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围
  3. maven的安装与配置使用
  4. Spring的注解@Qualifier小结
  5. 阿里巴巴JAVA开发手册
  6. com.javax.servlet 慢慢看完慢慢学完
  7. 二.css介绍
  8. RabbitMQ简单应用の公平分发(fair dipatch)
  9. Windows平台下使用CodeBlocks+GCC编译器生成动态dll,C#调用报错
  10. [WPF]为旧版本的应用添加触控支持
  11. JAVA eclipse Maven项目红叹号解决方案
  12. python 采坑总结 调用键盘事件后导致键盘失灵的可能原因
  13. rpmforge
  14. 【Atcoder】AGC022 C - Remainder Game 搜索
  15. nodejs升级
  16. [转载]交换机STP协议
  17. jmeter察看结果树响应数据中文乱码解决办法
  18. 使用 Node.js 对文本内容分词和关键词抽取
  19. python web开发之flask框架学习(1) 创建flask项目
  20. 洛谷P1505 [国家集训队]旅游(树剖+线段树)

热门文章

  1. &quot;运行时&quot;如何解析类型引用
  2. Mysql命令大全&amp;&amp;指定端口登录
  3. linux ps命令(转载)
  4. 【收藏用】--切勿转载Java处理XML的三种主流技术及介绍
  5. db link的查看创建与删除
  6. IDEA激活服務器
  7. .net常用组件
  8. Django session 详解-part II-session
  9. nyoj 54-小明的存钱计划
  10. python通过163邮箱发送邮件