LeetCode #6 简单题(小模拟)

Posted error408

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode #6 简单题(小模拟)相关的知识,希望对你有一定的参考价值。

题目: 将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。然后横向输出。LeetCode上有几个样例可以看看。

题解:模拟一下就好了- -,对原字符串s排列完后,横向每个添加到ans中去就行了

class Solution {
public:
    string convert(string s, int numRows) {
        if (numRows == 1) return s;
        int len = (int)s.size(), gridSize = numRows * 2 - 2;
        string ans = s;
        int pos = 0;
        for (int i = 0; i < numRows; ++i){
            int index = i;
            if (index == 0 || index == numRows - 1){
                while (index < len){
                    ans[pos++] = s[index];
                    index = index + gridSize;
                }
            }
            else{
                bool bottom = true;
                while (index < len) {
                    ans[pos++] = s[index];
                    if (bottom){
                        index = index + (numRows - i - 1) * 2;
                    }
                    else{
                        index = index + i * 2;
                    }
                    bottom = !bottom;
                }
            }
        }
        return ans;
    }
};

 

以上是关于LeetCode #6 简单题(小模拟)的主要内容,如果未能解决你的问题,请参考以下文章

leetcode第6题:Z字形变换--直接模拟求解法

Leetcode67. 二进制求和(简单模拟)

Leetcode5744. 旋转盒子(JAVA简单模拟)

LeetCode 面试题 01.05 一次编辑[模拟 双指针] HERODING的LeetCode之路

leetcode之数论与模拟刷题总结1

leetcode之模拟刷题总结1