leetcode 22-03-27

今日份 leetcode

  • 189. 轮转数组
  • 709. 转换成小写字母
  • 1309. 解码字母到整数映射

189. 轮转数组

解题思路

将值放到新数组中对应的位置,然后用新数组覆盖原数组

代码

1
2
3
4
5
6
7
8
9
10
// C
void rotate(int* nums, int numsSize, int k){
int arr[numsSize];
for (int i = 0; i < numsSize; i++) {
arr[(i + k) % numsSize] = nums[i];
}
for (int i = 0; i < numsSize; i++) {
nums[i] = arr[i];
}
}

709. 转换成小写字母

解题思路

判断是否为大写,是大写就 ‘+32’,因为大小写相差 32

代码

1
2
3
4
5
6
7
//C
char * toLowerCase(char * s){
for(int i = 0; i < strlen(s); i++){
if(s[i] >= 'A' && s[i] <= 'Z') s[i] += 32;
}
return s;
}

1309. 解码字母到整数映射

又是个难得的好成绩🤣

解题思路

字符 0 - 9 减去 字符 0 就是数字 0 - 9,这时只要加上字符 a 就会等于其对应的小写字母,知道这些,就只需要判断输入的字符满足 0 - 9 还是 # 的条件就好了

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// C
char * freqAlphabets(char * s){
char *res= malloc(sizeof(char) * (strlen(s) + 1) );
int idx = 0;

for(int i = 0; i < strlen(s);){
if(i+2 < strlen(s) && s[i+2] == '#'){
res[idx++] = ((s[i] - '0') * 10 + s[i + 1] - '1') + 'a';
i += 3;
}else{
res[idx++] = (s[i] - '1') + 'a';
i++;
}
}
res[idx] = '\0';
return res;
}