Nicn的刷题日常之字符逆序

 

目录

1.题目描述 

输入描述:

输出描述:

输入

输出

输入

输出

2.解题思路 

3.解题  

4.利用指针思想


 

1.题目描述 

链接:字符逆序__牛客网
来源:牛客网
 

将一个字符串str的内容颠倒过来,并输出。

数据范围:1≤len(str)≤10000 1 \le len(str) \le 10000\ 1≤len(str)≤10000 

 
输入描述:

输入一个字符串,可以有空格


输出描述:

输出逆序的字符串

示例1

输入

I am a student

输出

tneduts a ma I

示例2

输入

nowcoder

输出

redocwon

2.解题思路 

①正向输入反向拿出,这种方法是我第一次想到的但是,在测试的时候有以下错误:
 

段错误

您的程序发生段错误,可能是数组越界,堆栈溢出(比如,递归调用层数太多)等情况引起

3.解题  

#include 


 
int main()
{
	char arr[100] = { 0 };
	int i = 0;
	while ((arr[i] = getchar()) != '\n')
	{
		i++;
	}
	i = i-1;


	while (i>=0)
	{
		printf("%c", arr[i]);
		i--;
	}
	return 0;

}

4.利用指针思想

利用指针传参将首地址和末尾地址的指针指向的内容进行交换然后知道两个指针之间没有内容结束。

void Reverse(char* str)
{
    char* left = str;
    char* right = str + strlen(str)-1;
    while(left < right)
    {
        char temp = *left;
        *left = *right;
        *right = temp;
        ++left;
        --right;
    }
}
// 注意:如果是在线OJ时,必须要考虑循环输入,因为每个算法可能有多组测试用例进行验证,参考以下main函数写法,
int main()
{
    char str[101] = {0};
    while(gets(str))
    {
        Reverse(str);
        printf("%s\n", str);
        memset(str, 0, sizeof(str)/sizeof(str[0]));
    }
    return 0;
}

 

你可能感兴趣的:(算法,数据结构,leetcode,动态规划,面试)