**********
思路
将s对折,前后对应交换(有点简单,规范一点可以写成双指针)
代码
void reverseString(char* s, int sSize) {
int l = sSize / 2;
char temp;
for (int i = 0; i < l; i++) {
temp = s[i];
s[i] = s[sSize - 1 - i];
s[sSize - 1 - i] = temp;
}
return;
}
541. 反转字符串 II
思路
一开始是想设置很多标记记录第几个k了之类的,敲代码之前来了解析,改成了卡尔哥说的办法。 让i每次更新2k更方便,然后正常翻转就行了
代码
char* reverseStr(char* s, int k) {
int l = strlen(s);
for (int i = 0; i < l; i += 2 * k) {
if (i >= l)
break;
int left, right;
left = i;
right = i + k - 1;
if (right >= l)
right = l - 1;
while (left <= right) {
char temp = s[left];
s[left++] = s[right];
s[right--] = temp;
}
}
return s;
}
54. 替换数字
思路
NULL
代码
#include <stdio.h>
#include <string.h>
#define MAXsize 10000
int main(void)
{
char s[MAXsize];
char ans[2 * MAXsize];
memset(ans, 0, sizeof(char) * (2 * MAXsize));
scanf("%s", &s);
int len = strlen(s);
for (int i = 0; i <= len; i++)
{
if (s[i] >= '0' && s[i] <= '9')
{
sprintf(ans + strlen(ans), "number");
}
else
{
ans[strlen(ans)] = s[i];
}
}
printf("%s\n", ans);
return 0;
}