倒置字符串
倒置字符串
https://www.nowcoder.com/questionTerminal/8869d99cf1264e60a6d9eff4295e5bab?answerType=1&f=discussion
题目描述:
将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。字符串长度不超过100。
输入描述:
输入一个仅包含小写字母、空格、'.' 的字符串,长度不超过100。
'.' 只出现在最后一个单词的末尾。
输出描述:
依次输出倒置之后的字符串,以空格分割。
示例:
输入 | 输出 |
---|---|
I like beijing. | beijing. like I |
题解:
#include<stdio.h>
#include<string.h>
//数组倒置函数
int reverse(char str[],int left,int right){
char ins=0;
while(left<=right){
ins=str[left];
str[left]=str[right];
str[right]=ins;
left++;
right--;
}
}
int main(){
char str[100]={"\0"};
while(gets(str)!=NULL){
int left=0;
int right=strlen(str)-1;
reverse(str,left,right);//先进行整体倒置
left=0;
//按部分倒置
for(int i=0;i<strlen(str);i++){
if(str[i]==' '){
right=i-1;
reverse(str,left,right);
left=right+2;
}//前面的部分
if(i==strlen(str)-1){
right=i;
reverse(str,left,right);
}//最后一部分
}
//输出
for(int i=0;i<=strlen(str);i++){
printf("%c",str[i]);
}
printf("\n");
}
return 0;
}