top1编程
← 返回题目
题解

【基础】镜像字符串

1 条题解

  • 0
    @ 2026-7-28 23:26:16
    #include<bits/stdc++.h>
    using namespace std;
    int main(){
    	int n;
    	cin >> n;
    	//cin读完数字会残留换行,用getchar吸收换行符,防止getline读空
    	getchar();
    	while(n--){
    		string s;
    		getline(cin,s);
    		int b=0,g=0; 
    		for(int i=0;i<s.size();i++){
    			// 当前字符是空格
    			if(s[i]==' '){
    				// 前面存在完整单词,翻转输出
    				if(g>0){//空格前面的字符超过一个
    					string dc=s.substr(b,g);
    					reverse(dc.begin(),dc.end());
    					cout<<dc;
    					g=0;
    				}
    				// 空格直接原样输出
    				cout<<s[i];
    			}else{
    				// 非空格字符,属于单词内容
    				if(g==0){
    					// 开启新单词,记录单词起始位置
    					b=i;
    					g=1;
    				}else{
    					// 单词长度累加
    					g++;
    				}
    			}
    		}
    		// 处理行末尾最后一个单词
    		if(g>0){
    			string dc=s.substr(b,g);
    			reverse(dc.begin(),dc.end());
    			cout<<dc;
    		}
    		cout<<endl;// 一行处理完换行
    	}
    	return 0;
    }
    
    • 1