所有代码都采用C/C++编写给定一个字符串s,将s中的字符顺序颠倒过来,比如s='abcd',逆序后变成s='dcba'。
char* Reverse(char* s) { //将q指向字符串最后一个字符 char* q = s ; while( *q++ ) ; q -= 2 ; //分配空间,存储逆序后的字符串。 char* p = newchar[sizeof(char) * (q - s + 2)] ; char* r = p ; // 逆序存储 while(q >= s) *p++ = *q-- ; *p = '\0' ; return r ; }
设置两个指针,分别指向字符串的头部和尾部,然后交换两个指针所指的字符,并向中间移动指针直到交叉。
char* Reverse(char* s) { // p指向字符串头部 char* p = s ; // q指向字符串尾部 char* q = s ; while( *q ) ++q ; q -- ; // 交换并移动指针,直到p和q交叉 while(q > p) { char t = *p ; *p++ = *q ; *q-- = t ; } return s ; }
对字符串s在区间left和right之间进行逆序,递归法void Reverse( char* s, int left, int right ) { if(left >= right) return; char t = s[left] ; s[left] = s[right] ; s[right] = t ; Reverse(s, left + 1, right - 1) ;
对字符串str在区间left和right之间进行逆序char* Reverse( char* s, int left, int right ) { while( left < right ) { char t = s[left] ; s[left++] = s[right] ; s[right--] = t ; } return s ; }
以上就是小编带给大家的如何操作的关键所在,如果觉得本经验对你们有帮助,请点击正下方的或者是右上角的“大拇指”或分享或“关注TA”给小编我进行一点小小的支持。大家也可以下面发表一下自己的看法。(未经同意,谢绝转载或复制)