344. 反转字符串
344. 反转字符串https://leetcode.cn/problems/reverse-string/1.这道题很简单,直接使用双指针就可以
2.这里有一个可以优化的点,left++和right-- 可以放在字符串替换的时候完成,没必要单独写
void reverseString(char* s, int sSize) {
int left = 0;
int right = sSize - 1;
while (left <= right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;
right--;
}
}
541.反转字符串 II
541. 反转字符串 IIhttps://leetcode.cn/problems/reverse-string-ii/1.两种情况,一种小于k,一种大于k,然后步长都是2k
2.这里优化写法是k = i + k > len ? len - i : k;right = i + k - 1; 但是基于工作后的一个考量,三元运算符会存在codecheck和代码cleancode的风险;
char* reverseStr(char* s, int k) {
int sLen = strlen(s);
for(int i = 0; i < sLen; i += 2 * k) {
int left = i;
int right;
if (i + k <= sLen) {
right = i + k - 1;
} else {
right = sLen - 1;
}
while (left <= right) {
char tmp = s[left];
s[left++] = s[right];
s[right--] = tmp;
}
}
return s;
}
卡码网:54.替换数字
54. 替换数字(第八期模拟笔试)https://kamacoder.com/problempage.php?pid=10641.主要还是掌握学习字符串的一些方法
2.可以使用自己封装的isDigital函数可判断字符是否是数字
#include<stdio.h>
int isDigital(char ch) {
return (ch >= '0' && ch <= '9');
}
int main(){
char s[10000];
scanf("%s",&s);
char res[20000];
int idx = 0;
for (int i = 0; i < strlen(s); i++) {
if (isDigital(s[i]) == 0) {
res[idx++] = s[i];
} else {
res[idx++] = 'n';
res[idx++] = 'u';
res[idx++] = 'm';
res[idx++] = 'b';
res[idx++] = 'e';
res[idx++] = 'r';
}
}
for (int i = 0; i < strlen(res); i++){
printf("%c", res[i]);
}
return 0;
}