leet344.反转字符串

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 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"]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-string
 

#include <stdio.h>
/**
    输入字符串以字符数组 char[] 的形式给出。
    不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

    简单的交换
*/
void reverseString_1(char* s, int sSize)
{
    int i =0;
    int tail = sSize-1;
    char temp;
         while(i+1 <= sSize/2 )
        {
            temp = s[i];
            s[i] = s[tail-i];
            s[tail-i] = temp;
            i++;
        }
///当时纠结奇数与偶数项需要分别处理,后来手动演算,发现不需要如此操作,对于奇数项中间项被直接空留

}
void reverseString(char* s, int sSize)
{
    char * start = s;
    char * tail = s +sSize -1;
    char temp;
    while(start <tail){
        temp = *start;
        *start = *tail;
        *tail = temp;
        start++;
        tail--;
    }
}


int main(void)
{
    char arr[5]= {'h','e','l','y','o'};

    reverseString_1(arr, 5);

    for(int j =0; j<5; ++j)
    {
        printf("%c\n",arr[j]);
    }

    return 0;
}


发布了46 篇原创文章 · 获赞 1 · 访问量 5738

猜你喜欢

转载自blog.csdn.net/Happy_Yu_Life/article/details/103859136