您的位置:首页 > 移动开发

java版:输入参数This is an Apple on eBay返回Siht si na Elppa no yAbe

2015-04-05 23:56 471 查看
编程题

请编写一个函数(function)。

我们工作里使用的的语言是PHP,希望阁下能以PHP作答。若有困难,亦可使用其他语言完成。(如C#、Java、C++、Python、Perl、Ruby等)

函数的要求是这样:

输入参数–一个字符串,返回一个字符串。

输入是一句英文句子,只有英文字(a-z, A-Z)、每个字之间仅以一个空格分格,前后没有空格。

返回的是要把每一个字的字母顺序倒转写,但字的顺序和字母的大小写位置则保持不変。

例:

输入参数

This is an Apple on eBay

返回

Siht si na Elppa no yAbe

(如eBay因为是第二个字母大写,倒写后保持第二个字母的大写。)

代码如下:

package getnewstr;

public class getnewstr {

    public static void main(String[] args) {

        String ENStr = "This is an Apple on eBay";

        String ENStr2 = "Describe YourSelf in Two words";

        getnewstr gns = new getnewstr();

        gns.getNewStr(ENStr);

    }

    // 获取转换后的String

    public void getNewStr(String str) {

        // 把字符串用空格分割。

        String[] arr = str.split(" ");

        int str_length = arr.length;

        int str_length_1 = str_length - 1;

        for (int i = 0; i < str_length; i++) {

            // 把每个单词中的字母转换位置。赋新值。

            arr[i] = getNewStrWord(arr[i]);

        }

        String new_str = "";

        // 把转换后的单词拼接成语句。

        for (int i = 0; i < str_length; i++) {

            if (i == str_length_1) {

                new_str = new_str + arr[i];

            } else {

                new_str = new_str + arr[i] + " ";

            }

        }

        // 显示入力

        System.out.println("输入为:" + str);

        // 显示结果

        System.out.println("输出为:" + new_str);

    }

    // 把单词中的字母倒序。 This -> Siht

    public String getNewStrWord(String str) {

        int WordLength = str.length();

        String[] Word_arr = new String[WordLength];

        int[] flag = new int[WordLength];

        for (int i = 0; i < WordLength; i++) {

            Word_arr[i] = str.substring(i, i + 1);

            // 如果为大写把flag置成1.

            flag[i] = isAcronym(Word_arr[i]) == false ? 1:0;

        }

        // 把单词中的字母倒序

        swap(Word_arr);

        // 把倒序后的单词中的字母全部变成小写,在把对应位置下的字母变成大写

        for (int i = 0; i < WordLength; i++) {

            // 如果flag为1,则把对应位置下的字母转为大写,否则转成小写字母.

            Word_arr[i] = (flag[i] == 1) ? 

                    Word_arr[i].toUpperCase() 

                    : 

                        Word_arr[i].toLowerCase();

        }

        String newword_str = "";

        // 把每个字母重新组合成单词

        for (int i = 0; i < WordLength; i++) {

            newword_str = newword_str + Word_arr[i];

        }

        return newword_str;

    }

    // 把数组里的内容倒序。

    public void swap(String a[]) {

        int len = a.length;

        for (int i = 0; i < len / 2; i++) {

            String tmp = a[i];

            a[i] = a[len - 1 - i];

            a[len - 1 - i] = tmp;

        }

    }

    // 判断大小写

    public boolean isAcronym(String word) {

        for (int i = 0; i < word.length(); i++) {

            char c = word.charAt(i);

            if (!Character.isLowerCase(c)) {

                return false;

            }

        }

        return true;

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java
相关文章推荐