倒置字符串
Posted 跳动的bit
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了倒置字符串相关的知识,希望对你有一定的参考价值。
/***********************************************************************
目的:输入一句英文(长度不超过100),并将其中的单词进行倒置,标点不倒置。如 I like beijing. 倒置后变为 beijing. like I
分析:三步翻转法
▶ 1、字符串整体翻转:
.gnijieb ekil I
▶ 2、每个单词逆序
beijing. like I
平台:Visual studio 2017 && windows
*************************************************************************/
📝 实现代码1:
#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;
}
🧿 非常经典的一道题,曾经是腾讯考过的笔试题
以上是关于倒置字符串的主要内容,如果未能解决你的问题,请参考以下文章