LeetCode :初级算法_[字符串]:反转字符串(C语言实现)

LeetCode :初级算法_[字符串]:反转字符串


题目地址:
https://leetcode-cn.com/explore/featured/card/top-interview-questions-easy/5/strings/32/


反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。

示例 1:

输入:["h","e","l","l","o"]
输出:["o","l","l","e","h"]

示例 2:

输入:["H","a","n","n","a","h"]
输出:["h","a","n","n","a","H"]

实现:


void reverseString(char* s, int sSize){
    char *f, *t, c;
    for(f=s, t=s+sSize-1; f<=t; f++, t--)
    {
        c = *f;
        *f = *t;
        *t =c;
    }    
}


LeetCode :初级算法_[字符串]:反转字符串(C语言实现)_第1张图片


题目很简单。之前也写过:

https://blog.csdn.net/weixin_38184741/article/details/81073510

思路的话,看代码应该是可以理解的。

大致就是定义两个指针,*f指向字符串首部,*t指向字符串尾部。
在for循环中开始交换两边的元素。直到到达中间位置:(*f <= *t)不再成立

测试发现的情况:

1、for循环比while循环快一些。(感觉不应该出现这种情况)
2、想要运行速度快一下,char c临时变量要在循环之外定义。
3、 char *f, *t, c;一起定义,比挨个定义的运行速度要快一些。

你可能感兴趣的:(LeetCode)