Leetcode Q6:ZigZag Conversion
2015-07-28 01:12
225 查看
题目6:
The string
of rows like this: (you may want to display this pattern in a fixed font for better legibility)
And then read line by line:
Write the code that will take a string and make this conversion given a number of rows:
return
The string
"PAYPALISHIRING"is written in a zigzag pattern on a given number
of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N A P L S I I G Y I R
And then read line by line:
"PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3)should
return
"PAHNAPLSIIGYIR".
/* 获取字符串长度 */ int GetLen(char* s) { int len = 0; while (*(s++) != '\0') { len++; } return len; } char* convert(char* s, int numRows) { int i = 0; int j = 0; int p = 0; int str_len = 0; int sub_len = 0; int x = 0; int y = 0; int row = 0; int col = 0; char** arr = NULL; str_len = GetLen(s); if (str_len == 0 || str_len == 1 || numRows == 1) { return s; } /* 计算长度 */ sub_len = (numRows - 1) * (str_len / (2 * numRows - 2) + 1); arr = (char**)malloc(sizeof(char*)*numRows); for (i = 0; i < numRows; i++) { *(arr+i) = (char*)malloc(sub_len); for (j = 0; j < sub_len; j++) { *(*(arr+i) + j) = 0; } } for (i = 0; i < str_len; i++) { x = i % (2 * numRows - 2); y = i / (2 * numRows - 2); /* 计算行号和列号 */ if (x <= numRows - 1) { row = x; col = y * (numRows - 1); } else { row = 2 * numRows - 2 - x; col = i % (numRows - 1) + (numRows - 1) * y; } *(*(arr + row) + col) = s[i]; } /* 输出数组元素 */ for (i = 0; i < numRows; i++) { for (j = 0; j < sub_len; j++) { if ( *(*(arr + i) + j) != '\0') { s[p] = *(*(arr + i) + j); p++; } } } return s; }
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解
- LeetCode [Day 6] ZigZag Conversion 题解