6:Z字形变换
难度中等 |
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 |
比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下: |
L C I R E T O E S I I G E D H N |
代码
char * convert(char * s, int numRows){
int n = strlen(s);
char *res = NULL;
int k = 0;
if (numRows == 1)
return s;
res = (char*)malloc(sizeof(char) * (n + 1));
for (int i = 0; i < numRows; i++) {
for (int j = 0; j < n; j++) {
if (j % (2 * numRows - 2) == i ||
j % (2 * numRows - 2) == (2 * numRows - 2 - i)) {
res[k++] = s[j];
}
}
}
res[k] = '\0';
return res;
}
7:整数反转
难度简单 |
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。 |
示例 1: |
输入: 123 输出: 321 |
示例 2: |
输入: -123 输出: -321 |
示例 3: |
输入: 120 输出: 21 |
代码
int reverse(int x)
{
int pop;
long sum = 0; //long类型也是2^-31到2^31-1.
while ( x != 0) {
pop = x % 10;
sum = sum * 10 + pop;
x = x / 10; //简单的反转整数
}
if ((int)sum != sum) // 将得到的long类型的sum和int类型性的sum进行比较若不同则溢出返回0
return 0;
return (int)sum;
}