LeetCode 344.Reverse String(反转字符串) -- c语言

    xiaoxiao2022-07-07  172

    344.Reverse String

    Write a function that reverses a string. The input string is given as an array of characters char[].

    Do not allocate extra space for another array, you must do this by modifying the input array in-place with O(1) extra memory.

    You may assume all the characters consist of printable ascii characters.

    Example 1:

    Input: ["h","e","l","l","o"] Output: ["o","l","l","e","h"]

    Example 2:

    Input: ["H","a","n","n","a","h"] Output: ["h","a","n","n","a","H"]

    解题思路:

    两头开始,依次交换字符,直到中间位置为止。

    /* 执行用时 : 64 ms, 在Reverse String的C提交中击败了96.47% 的用户 内存消耗 : 13.7 MB, 在Reverse String的C提交中击败了75.42% 的用户 */ void reverseString(char* s, int sSize){ int i = 0,j = sSize-1; char temp; while(i < j){ temp = s[i]; s[i] = s[j]; s[j] = temp; i++;j--; } } /* 执行用时 : 72 ms, 在Reverse String的C提交中击败了94.85% 的用户 内存消耗 : 13.8 MB, 在Reverse String的C提交中击败了74.86% 的用户 */ void reverseString(char* s, int sSize){ int i; char temp; for(i = 0; i < sSize; i++, sSize--){ temp = *(s + i); *(s + i) = * (s + sSize- 1); * (s + sSize - 1) = temp; } return s; } //执行时间20ms--范例 /* 本人电脑提交的数据: 执行用时 : 64 ms, 在Reverse String的C提交中击败了98.22% 的用户 内存消耗 : 13.6 MB, 在Reverse String的C提交中击败了75.42% 的用户 */ void reverseString(char* s, int sSize) { int i; char temp; for(i=0;i<sSize/2;i++){ temp=s[i]; s[i]=s[sSize-i-1]; s[sSize-i-1]=temp; } }

    后记:

    掌握各种不同的对地址的引用方式。

    最新回复(0)