0006Z字形变换_wise的笔记

解题思路

用一个n个字符串的数组保存想要的n行,最后输出的时候合并。

第一版

def convert(self, s: str, numRows: int) -> str:
        # 初始化空值来存储结果
        Result = []
        for n in range(numRows):
            Result.append("")
        if numRows == 1:
            return s
        Z = numRows + numRows - 2 # Z个元素一个轮询
        
        for i in range(len(s)):
            # 把当前的元素添加到Result中
            for k in range(Z):
                if i % Z == k:
                    if k < numRows : 
                        j = k 
                    else:  
                        j = j - 1
                    Result[j]+=s[i]
                    break
        
        # 构造最终结果
        for n in range(1,numRows):
            Result[0]+=(Result[n])
        return  Result[0]

第二版改进

减少了中间循环判断的。

    def convert(self, s: str, numRows: int) -> str:
        # 初始化空值来存储结果
        Result = []
        for n in range(numRows):
            Result.append("")
        if numRows == 1:
            return s
        Z = numRows + numRows - 2 # Z个元素一个轮询
        
        k = 0 
        for i in range(len(s)):
            # 把当前的元素添加到Result中
            # for k in range(Z):
            if i % Z == k:
                if k < numRows : 
                    j = k 
                else:  
                    j = j - 1
                Result[j]+=s[i]
                
            if k < Z-1:
                k +=1
            else: 
                k = 0
        
        # 构造最终结果
        for n in range(1,numRows):
            Result[0]+=(Result[n])
        return  Result[0]
图片.png

再次改进

只需要把输出结果的循环改变以下 就可以节省一些时间

        # 构造最终结果
        # for n in range(1,numRows):
        #     Result[0]+=(Result[n])
        return  ''.join(Result)
图片.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。