题解 | 反转字符串
/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * 反转字符串 * @param str string字符串 * @return string字符串 */ #include <string.h> char* solve(char* str ) { // write code here int i,len; char *p1 = NULL; char *p2 = NULL; len = strlen(str); p1 = &str[len-1]; p2 = str; char *adverse_str = { 0 }; for(i=0;i<len/2;i++) { *p1 = *p1 + *p2; *p2 = *p1 - *p2; *p1 = *p1 - *p2; p1--; p2++; } return str; }
大致思路:双指针+首尾两个数据依次进行交换。
p1指针指向尾部。p2指针指向首部。*p1 和 *p2两两交换后,p1指针-1,p2指针+1,因为前后同时开始,所以只需len/2次即可。