将一句话里面的单词进行倒置,标点符号不倒换,比如一句话“ I love you!" 。 倒换后变成了” you! love I" 。
算法思想:
第一: 将字符串全盘倒置为:“ !uoy evol I ",
第二: 进行部分翻转,如果不是空格,则开始翻转单词。
#include<stdio.h> #include<string.h> #define MAX 20 int main(void) { int i=0,j=0,flag=0,begin,end; char str[]="i come form tianjin.",temp; //char temp[MAX]; j=strlen(str)-1; printf(" string = %s\n",str); //第一步是进行全盘翻转,将单词变成".nijnait morf emoc i" while(j>i) { temp=str[i]; str[i]=str[j]; str[j]=temp; j--; i++; } printf(" string = %s\n",str); i=0; //第二步进行部分翻转,如果不是空格,则开始翻转单词 while(str[i]) { if(str[i]!=' ') { begin = i; while(str[i]&&str[i]!=' ') {i++;} i=i-1; end=i; } while(end>begin) { temp=str[begin]; str[begin]=str[end]; str[end]=temp; end--; begin++; } i++; } printf(" string = %s\n",str); return 0; }
如果大家有更好更高效的算法,欢迎各位拍砖!!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。