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;
}