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