Leetcode基础习题集
Reverse Integer
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
答案
public int reverse(int x) { long rev= 0; while( x != 0){ rev= rev*10 + x % 10; x= x/10; if( rev > Integer.MAX_VALUE || rev < Integer.MIN_VALUE) return 0; } return (int) rev; }
ZigZag Conversion
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"
.
string convert(string s, int nRows) { if (nRows <= 1) return s; const int len = (int)s.length(); string *str = new string[nRows]; int row = 0, step = 1; for (int i = 0; i < len; ++i) { str[row].push_back(s[i]); if (row == 0) step = 1; else if (row == nRows - 1) step = -1; row += step; } s.clear(); for (int j = 0; j < nRows; ++j) { s.append(str[j]); } delete[] str; return s; }