编程之法—实现单词翻转

单词翻转

在输入一个英文句子,翻转句子中的单词的顺序。要求单词内字符的顺序不变,句子中单词以空格符隔开。为简单起见,标点符号和普通字母处理一样。例如“I am a student.”,则输出“student. a am I”。


想法:
由特殊到一般:把每一个单词当作一个字母的形式,如I=A ,B=am,C=a, D=student.。本体相当于把char s[]={‘A’,’B’,’C’,’D’}进行翻转。

例如:把英文句子存入字符串数组。代码如下所示:

public class wordReverse {

    public static void main(String[] args) {

        String s[]={"you ","must ","do ","it ","right ","now."};
        System.out.println(s[1]);
        int length=s.length;
        s=ReverseString(s,0,length-1);
        StringBuilder str= new StringBuilder();
        str.append(s[0]+s[1]+s[2]+s[3]+s[4]+s[5]);
        String str1=str.toString();
        str1=str1.trim();
        System.out.println(str1);
    }
    /**
     * 反转数组中,从from下标开始到to下标结束的字符
     * @param s
     * @param from
     * @param to
     * @return
     */
    public static String[] ReverseString(String s[],int from ,int to){
        while(from<to){
            String t=s[from];
            s[from++]=s[to];
            s[to--]=t;
        }
        return s;
    }
}

如果想从控制台输入句子那么首先得知道怎么实现控制台输入,控制台输入的方法如下:

        String s1[] =new String[100];
        BufferedReader inputSteam=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入一个英文句子");
        try {
            String strBuffer=inputSteam.readLine();
            strBuffer=strBuffer.trim();
            s1=strBuffer.split(" ");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
完整代码如下:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class wordReverse {

    public static void main(String[] args) {

        String s1[] =new String[100];
        BufferedReader inputSteam=new BufferedReader(new InputStreamReader(System.in));
        System.out.println("请输入一个英文句子");
        try {
            String strBuffer=inputSteam.readLine();
            strBuffer=strBuffer.trim();
            s1=strBuffer.split(" ");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        int length=s1.length-1;
        for(int k=0;k<length;k++){
            StringBuffer sB=new StringBuffer();
            sB.append(s1[k]+" ");
            s1[k]=sB.toString();
            //System.out.print(sB.toString());
        }
        String s[]=ReverseString(s1,0,s1.length-1);
        for(int j=0;j<s.length;j++){
            System.out.print(s[j]);
        }

    }
    /**
     * 反转数组中,从from下标开始到to下标结束的字符
     * @param s
     * @param from
     * @param to
     * @return
     */
    public static String[] ReverseString(String s[],int from ,int to){
        while(from<to){
            String t=s[from];
            s[from++]=s[to];
            s[to--]=t;
        }
        return s;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值