字符串按单词倒置

问题:将一句话里的单词进行倒置,标点符号不倒置。例如"i come from nanjing."输出结果为"nanjing. come from i"。

分析:第一步,将字符串完全倒置,即".gnijnan morf emoc i"

第二步,将每个单词进行部分倒置,即"nanjing. from come i"

倒置时设置begin和end两个指针分别指向字符串的开头和末尾。

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

void strReverse(char *str,int n)
{
int i = 0;
int j = 0;
int begin;
int end;
char temp;


//...............第一步:整体倒置......................//

j = n-1;
while (j>i)
{
temp = str[i];
str[i] = str[j];
str[j] = temp;
i++;
j--;
}
printf("after reversing wholly string = %s/n",str);

//...............第二步:按单词部分倒置......................//
i = 0;
while (str[i]!='/0')
{
if (str[i]!=' ')
{
begin = i;
while ((str[i]!='/0') && (str[i]!=' '))
{
i++;
}
i = i-1;
end = i;
}
while (begin<end)
{
temp = str[begin];
str[begin] = str[end];
str[end] = temp;
begin++;
end--;
}
i++;
}
}
int main()
{

char str[] = "i come from nanjing.";
int j = 0;

j = strlen(str);printf(" string = %s/n",str);strReverse(str,j);printf(" string = %s/n",str);return 0;}

相关文章

什么是设计模式一套被反复使用、多数人知晓的、经过分类编目...
单一职责原则定义(Single Responsibility Principle,SRP)...
动态代理和CGLib代理分不清吗,看看这篇文章,写的非常好,强...
适配器模式将一个类的接口转换成客户期望的另一个接口,使得...
策略模式定义了一系列算法族,并封装在类中,它们之间可以互...
设计模式讲的是如何编写可扩展、可维护、可读的高质量代码,...