6.Z字形变换
解题:
class Solution {
public:
string convert(string s, int numRows) {
if (s.size() <= 2 || numRows<=1 || s.size()<=numRows) return s;
int x = numRows * 2 - 2;
int y = 0;
int i = 0;
int round = s.size() / x;
string a=s;
int k = 0;
if (s.size() % x != 0) round++;
while(i < numRows && y<s.size()) {
for (int j = 0; j < round; j++) {
k = i + x * j;
if (k < s.size()) {
a[y] = s[k];
y++;
}
if (i > 0 && i<numRows-1) {
k = x - i + x * j;
if (k < s.size()) {
a[y] = s[k];
y++;
}
}
}
i++;
}
return a;
}
};
通过结果:
思路:反正能找到规律,不详细说了,还没有参考别人思路,有空再写优化。
7.整数反转
解题:
class Solution {
public:
int length(int x){
int count=0;
while(x){
x=x/10;
++count;
}
return count;
}
int reverse(long long int x) {
long long y = 0, z = x, k = 1, sum = 0;
long long len = length(x);
while (len > 0) {
y = z % 10;
z = z / 10;
for (int i = 0; i < len-1; i++) { k = k * 10; }
sum = sum + y * k;
len--;
k = 1;
}
if(sum > 2147483647 || sum < -2147483648)
return 0;
else
return sum;
}
};
通过结果:
思路:虽然是中等题但是偏简单