问题:将一句话里的单词进行倒置,标点符号不倒置。例如"i come from nanjing."输出结果为"nanjing. come from i"。
分析:第一步,将字符串完全倒置,即".gnijnan morf emoc i"
第二步,将每个单词进行部分倒置,即"nanjing. from come i"
实现一:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char * convert (char* pure)
{
char *temp=(char *)malloc(strlen(pure)+1);
int i=0;
int j=strlen(pure);
int pre=0;
int k=0;
temp[j]='\0';
for (i=0;i<strlen(pure);i++)
{
temp[--j]=pure[i];//字符串反转
}
for(i=0;i<strlen(temp);i++)
{
if(temp[i]==' ')
{
k=i;
for(j=pre;j<i;j++)
pure[j]=temp[--k];
pure[j]=' ';
pre=i+1;
}
if(i==(strlen(temp)-1))
{
k=i;
for(j=pre;j<=i;j++)
pure[j]=temp[k--];
}
}
return pure;
}
int main(int argc, char* argv[])
{
char a[]="am loving you baby";
convert(a);
printf("%s\n",a);
return 0;
}
实现二:(较为清楚的实现)
#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;
}
分享到:
相关推荐
字符串翻转,单词不翻转java语言实现
字符串翻转,单词不翻转C语言实现
输入一个字符串,从中依次取出连续的字母作为一个字母串,并将其首字母换成对应的大写字母,然后将取出的所有字母串输出。例如,输入字符串“we12are3*45Chinese.”输出的字母串依次为:We、Are和Chinese。
字符串分析,分别输出字符串中个单词,并统计出单词个数
翻转字符串里的单词.md
字符串单词提取 北大数算资源,需要的自己下载,我发福利啊
DB2字符串处理 字符串处理 db2 函数
计算字符串最后一个单词的长度,单词以空格隔开。 输入 一行字符串,长度小于128。 输出 整数N,最后一个单词的长度。 样例输入 hello world
Mid Mid(string,start,length) 从string字符串的start字符开始取得length长度的字符串,如果省略第三个参数表示从start字符开始到字符串结尾的字符串 Left Left(string,length) 从string字符串的左边取得length长度...
字符串比较处理宏字符串比较处理宏字符串比较处理宏字符串比较处理宏
被爱可以字符串处理工具由中国被爱可以在线站长Bicyle开发,是一款字符串处理的绿色工具软件,它具有繁简体转换 、URL和HTML编码转换、字母大小写转换、邮件地址分组、半全角转换、区位码和ASCII码查询,WAP文档UTF-...
几个字符串处理函数增强版 常用需求基本都能完成 已经编译成DLL 函数列表 兼容字符和串 void revstr char str 字符串反转 int substring char res int pos int len char substr 从pos开始取len个字符到substr中 ...
434. 字符串中的单词数题目统计字符串中的单词个数,这里的单词指的是连续的不是空格的字符。输出: 5解释: 这里的单词是指连续的不是空格的字符,所以 "Hel
自己封装的纯C++的字符串处理函数大全,像特别好用的 字符串切分 Split函数代码均已经过测试,并有接口说明,可方便调用。
提取输入字符串中的单词源代码,VC++源代码,
本文给出计算一个字符串中单词的个数的C语言程序,感性趣的朋友可以看看。
统计输入字符串中的单词个数:编写一个程序,输入若干行文本,然后用函数strtok统计单词的总数,假设单词是以空格分隔
左旋转字符串 题目: 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。 如把字符串 abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数。 要求时间对长度为 n 的字符串操作的...
java字符串处理取出括号内的字符串 都是我自己试过可以用的j
多重字符处理机制,仿照python字符串处理写的一个针对c++的字符串处理