倒置字符串

233 阅读1分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战

/***********************************************************************
目的:输入一句英文 (长度不超过100) ,并将其进行整体倒置,如 I like juejing. 倒置后变为 .gnijeuj ekil I

🔑 核心思想:

  先确定字符串的左下标和右下标,然后循环交换,直至 left < right

平台:Visual studio 2017 && windows *************************************************************************/

📝 实现代码:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>

int main()
{
    char arr[100] = { 0 };
    //输入字符串
    gets(arr);
    //求字符串的长度
    int len = strlen(arr);
    //确定字符串的左下标和右下标
    int left = 0;
    int right = len - 1;
    //交换,直至left == right或者left > right
    while(left < right)
    {
        //备份
        char temp = 0;
        temp = arr[left];
        arr[left] = arr[right];
        arr[right] = temp;
        //迭代左右下标
        left++;
        right--;
    }
    printf("%s\n", arr);
    return 0;
}

💨 输出结果

image.png

/***********************************************************************
目的:输入一句英文 (长度不超过100) ,并将其中的单词进行倒置,标点不倒置。如 I like beijing. 倒置后变为 beijing. like I

🔑 核心思想:三步翻转法

  ▶ 1、字符串整体翻转: .gnijieb ekil I

  ▶ 2、每个单词逆序 beijing. like I

平台:Visual studio 2017 && windows *************************************************************************/

📝 实现代码1:

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
//逆置函数
void reverse(char* left, char* right)
{
    while(left < right)
    {
	char temp = 0;
	temp = *left;
	*left = *right;
	*right = temp;
	left++;
	right--;	
    }
}
int main()
{
    char arr[100] = { 0 };
    //输入字符串
    gets(arr);
    //求字符串的长度
    int len = strlen(arr);
    //字符串整体逆置,确定左下标和右下标
    reverse(arr, arr + len - 1);	
    //每个单词逆置
    char* start = arr;
    while(*start)
    {
	char* end = start;
	while(*end != ' ' && *end != '\0')
	{
            end++;
	}
	reverse(start, end - 1);
	if(*end == ' ')
	{
            //说明后面还有未逆置的单词
            start = end + 1;
	}
	else
	{
            //遇到了'\0',不能再往后了
            start = end;
        } 
    }
	printf("%s\n", arr);
	return 0;
}

💨 输出结果

image.png