• 【LeetCode】6. Z 字形变换


    来源

    https://leetcode-cn.com/problems/zigzag-conversion

    描述

    将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
    比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:

    之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。
    请你实现这个将字符串进行指定行数变换的函数:
    string convert(string s, int numRows);

    示例 1:
    输入: s = "LEETCODEISHIRING", numRows = 3
    输出: "LCIRETOESIIGEDHN"

    示例 2:
    输入: s = "LEETCODEISHIRING", numRows = 4
    输出: "LDREOEIIECIHNTSG"
    解释:

    思路:

    遍历字符串 (s) 中的每一个字符 (c) :
     将字符 (c) 添加到对应第 (i) 行中,
     如果到达 Z 字形转折点,调转方向 (flag = - flag)
     行号更新 (i += flag)

    C++

    展开后查看
    class Solution {
    public:
        string convert(string s, int numRows) {
            if(numRows < 2){
                return s;
            }
            vector<string> rows(numRows);
            int i = 0, flag = -1;
            for(char c: s){
                rows[i] += c;
                if(i == 0 || i == numRows - 1){
                    flag = -flag;
                }
                i += flag;
            }
            string result;
            for(string row : rows){
                result += row;
            }
            return result;
        }
    };
    

    Java

    展开后查看
    class Solution {
        public String convert(String s, int numRows) {
            if(numRows < 2){
                return s;
            }
            List<StringBuilder> rows = new ArrayList<StringBuilder>();
            for(int i = 0; i < numRows; i++){
                rows.add(new StringBuilder());
            }
            int i = 0, flag = -1;
            for(char c : s.toCharArray()){
                rows.get(i).append(c);
                if(i == 0 || i == numRows - 1){
                    flag = - flag;
                }
                i += flag;
            }
            StringBuilder result = new StringBuilder();
            for(StringBuilder row : rows){
                result.append(row);
            }
            return result.toString();
        }
    }
    
  • 相关阅读:
    大话设计模式--中介者模式
    大话设计模式--职责链模式
    大话设计模式--命令模式
    大话设计模式--桥接模式
    迷宫求解
    stuct、class、typedef
    软件测试
    Scrapy初探
    python练习
    链表基础
  • 原文地址:https://www.cnblogs.com/crazyBlogs/p/13072258.html
Copyright © 2020-2023  润新知