字符串 尽量先不用string
// 字符串长度
int len = strlen(s),i = 0;
// 定义一个字符串
// 注意长度 要len+1 最后留一个'\n'
char *ans = NULL;
ans = (char*)malloc(sizeof(char) * (len + 1));
c语言题解:
要注意的事情
- 1 ans++ 指针要后移
- 2 最后要
ans= '\0'
; - 3
return ans - len
最后指指到最前面一位 - 4 这一题用char[]时候,会错误,因为定义char ans[len]时候,len会太大而出现各种错误
c语言char*写法
char* reverseLeftWords(char* s, int n){
// for(int i = 0; i < len; i++){
// }
int len = strlen(s),i = 0;
char *ans = NULL;
ans = (char*)malloc(sizeof(char) * (len + 1));
for(int i = n;i < len; i++){
*(ans++) = s[i];
}
for(int i = 0;i < n;i++){
*(ans++) = s[i];
}
*ans= '\0';
return ans - len;
}
cpp写法
翻转法(抄别人的)
string reverseLeftWords(string s, int n) {
if (n >= s.length() || s.length() < 2 || n == 0) {
return s;
}
reverse(s, n, s.length() - 1); // 翻转 s2 部分
reverse(s, 0, s.length() - 1); // 翻转整个字符串 s
reverse(s, s.length() - n, s.length() - 1); // 翻转 s1 部分
return s;
}
void reverse(string& s, int start, int end) {
if (end >= s.length() || end - start < 1) {
return;
}
while (start < end) {
char temp = s[start];
s[start] = s[end];
s[end] = temp;
start++; end--;
}
}