【LeetCode】0006 — Z字形变换

一、题目

在这里插入图片描述

二、代码

class Solution {
    
    
public:
    string convert(string s, int numRows) {
    
    
    	//定义字符串向量,存储每行字符
        vector<string> str(numRows);
        //定义字符串用于返回答案
        string answer;
        //当给定行数为1时,返回字符串本身
        if(numRows == 1)
        {
    
    
            return s;
        }
        //当给定行数不为1时
        else
        {
    
    
        	//遍历字符串
            for(int i=0;i<s.size();i++)
            {
    
    
            	//当字符为竖线上的字符时
                if(i%(2*numRows-2)<numRows)
                {
    
    
                	//将字符存储于所在行的字符串中
                    str[i%(2*numRows-2)] += s[i];
                }
                //当字符为斜线上的字符时
                else
                {
    
    
                	//将字符存储于所在行的字符串中
                    str[numRows-1-((i%(2*numRows-2))-(numRows-1))] += s[i];
                }
            }
            //遍历向量容器,将向量容器中所有字符串合并到answer字符串中
            for(int j=0;j<numRows;j++)
            {
    
    
                answer += str[j];
            }
            //返回Z字形变换后的字符串
            return answer;
        }
    }
};

Guess you like

Origin blog.csdn.net/qq_59134387/article/details/127192337