题解 | 句子逆序

句子逆序

https://www.nowcoder.com/practice/48b3cb4e3c694d9da5526e6255bb73c3

#include<bits/stdc++.h>
//和单词倒排一样
using namespace std;
char a[10010];
int b[10010];//用于记录每一个单词开头的位置
int main(){
      scanf("%[^\n]",a);//使用%[^\n]输入带空格的一行
      int r,l,num=0;
      int len=strlen(a);
 
 int p=0;//用于判定i前一个字符是否为字母

 for(int i=0;i<len;i++){
 if(p==1&&((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')))continue;
//如果该点为字母且前一个字符也是字母,跳过
if((a[i]>='a'&&a[i]<='z')||(a[i]>='A'&&a[i]<='Z')){
b[num++]=i;p=1;//前一个字符为非字母,且该点为字母,意味该点为单词开头,记录该点,并且把p置为1
}
else p=0;//如果是非字母,p置为0
 }
 
for(int i=num-1;i>=0;i--){
    for(int j=b[i];(a[j]>='a'&&a[j]<='z')||(a[j]>='A'&&a[j]<='Z');j++){
        printf("%c",a[j]);
    }
    printf(" ");
}
return 0;
}

全部评论

相关推荐

点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务