字形变换(medium)"/>
[字符串]leetcode6:Z 字形变换(medium)
题目:
6. Z 字形变换
题解:
- 规律题
- 可以观察到到Z字形字符串对应原始字符串的下标是由
左上至右下
递增的,所以我们需要模拟这个行索引的变化,在遍历 s 中把每个字符填到正确的行record[i]。- 遍历字符串:
- 1)record[i]+=c:表示将字符c添加到对应的行
- 2)i+=flag:表示更新下一个字符对应的行号
- 3)flag=-flag:表示在达到Z字形转折点时,执行反向
- 4)推荐大佬的讲法:清晰图解Z字形变换
代码如下:
class Solution {
public:string convert(string s, int numRows) {if(numRows<2)return s;vector<string> record(numRows);//存放numRoss行的字符串//flag为1表示向下走,为-1表示向上走int i=0,flag=-1;for(auto c:s){record[i].push_back(c);//在i行后添加字符cif(i==0||i==numRows-1)flag=-flag;//到达转折点,改变flagi+=flag;}string result;for(const auto& r:record)result.append(r);return result;}
};
更多推荐
[字符串]leetcode6:Z 字形变换(medium)
发布评论