java和C++实现文本左右映射

本文介绍了如何使用Java和C++编程语言实现文本的左右映射,通过实例展示了将句子单词顺序反转的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实例:

I am a student, and  a good boy.

.boy good a and, student a am I

JAVA实现如下:

import java.util.Scanner;


public class ReverseText {
	public static boolean isAlpha(char tp){
		if((tp>='A'&&tp<='Z')||(tp>='a'&&tp<='z'))
			return true;
		return false;
	}
	public static void main(String [] ages){
		System.out.println("请输入文本:");  
		Scanner sc =new Scanner(System.in); 
		String text;
		text = sc.nextLine();
		String splitx[]=text.split(" ");
		int n =splitx.length;
		for(int i = 0;i<n;i++){
			if(isAlpha(splitx[i].charAt(splitx[i].length()-1)))
				if(i==n-1) continue;
				else  splitx[i] = " " +splitx[i];
			else{
					StringBuilder sb = new StringBuilder(splitx[i]);
					char temp = splitx[i].charAt(splitx[i].length()-1);
				   for(int j = splitx[i].length()-2 ;j>=0;j--){
				        sb.replace(j+1, j+2,""+(splitx[i].charAt(j)) );
				       // System.out.println(sb.toString());  
				   }
                    sb.replace(0, 1,""+temp );
				   if(i==n-1) {
				        splitx[i] =""+sb.toString();
				   }
					else  {
				        splitx[i] =" "+sb.toString();
					}
			   }
	     }
		for(int j =n-1;j>=0;j--){
			System.out.print(splitx[j]);
		}
	}
	
}

C++实现如下:

#include <iostream>
#include<string>
	#include<vector>
using namespace std;
bool isAlpha(char op){
	if((op>='A' and op<='Z') ||(op>='a' and op<='z'))
		return true;
	else
	    return false;
}

int main() {
	
   string str,temp;
   vector<string> text;
   cout<<"请输入文本:"<<endl;
   cin.ignore();
   while(getline(cin,str)){
	   for(int i =0, cp = 0; i<str.length() ;i++){
		   if(str[i]==' '){
			   temp = str.substr(cp,i+1); 
			   if(!isAlpha(temp[temp.length()-1])){
				   char tag = temp[temp.length()-1];
				   for(int j =temp.length()-2;j>=1;j--)
				         temp[j] = temp[j-1];
				   temp[0]=tag;
			   }//if
			   text.push_back(" "+temp); 
			   
			   cp=i+1;
		   } //if
	   }//for
	   
   }//while
	
	for(int i=text.size()-1;i>=0;i--){
		cout<<text[i];
	}
	
	return 1;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Poo_Chai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值