将字符串 "PAYPALISHIRING" 以Z字形排列成给定的行数:
P A H N
A P L S I I G
Y I R
之后从左往右,逐行读取字符:"PAHNAPLSIIGYIR"
实现一个将字符串进行指定行数变换的函数 : string convert(string s, int numRows);
示例 1:
输入: s = "PAYPALISHIRING", numRows = 3
输出: "PAHNAPLSIIGYIR"
示例 2:
输入: s = "PAYPALISHIRING", numRows = 4
输出: "PINALSIGYAHRPI"
1 class Solution 2 { 3 public: 4 string convert(string s, int numRows) 5 { 6 vector<char*> rect; 7 int index = 0; 8 string result; 9 while(index<s.size()) 10 { 11 char* pA = (char*) new char[numRows]; 12 char* pB = (char*) new char[numRows]; 13 rect.push_back(pA); 14 rect.push_back(pB); 15 for(int i=0;i<numRows;i++) 16 { 17 pA[i]=‘ ‘; 18 pB[i]=‘ ‘; 19 } 20 for(int j=0;j<numRows && index<s.size();j++) 21 { 22 pA[j]=s[index]; 23 index++; 24 cout<<pA[j]; 25 } 26 for(int j=numRows-2;j>0 && index<s.size();j--) 27 { 28 pB[j]=s[index]; 29 index++; 30 } 31 32 } 33 34 for(int j=0;j<numRows;j++) 35 { 36 for(int i=0;i<rect.size();i++) 37 { 38 if(rect[i][j]!=‘ ‘) 39 result.push_back(rect[i][j]); 40 } 41 } 42 43 return result; 44 } 45 };
原文地址:https://www.cnblogs.com/nkqlhqc/p/9085343.html
时间: 2024-11-09 09:45:36