加入收藏 | 设为首页 | 会员中心 | 我要投稿 成都站长网 (https://www.028zz.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

字符串变形

发布时间:2022-11-26 01:36:17 所属栏目:PHP教程 来源:未知
导读: 题目描述
对于一个给定的字符串,我们需要在线性时间 (也就是O(n)O(n)O(n)) 里对它做一些变形。首先这个字符串中包含着一些空格PHP字符串变量,就像"Hello World"一样,然后我们要做的是把

题目描述

对于一个给定的字符串,我们需要在线性时间 (也就是O(n)O(n)O(n)) 里对它做一些变形。首先这个字符串中包含着一些空格PHP字符串变量,就像"Hello World"一样,然后我们要做的是把这个字符串中由空格隔开的单词反序,同时反转每个字符的大小写。比如"Hello World"变形后就变成了"wORLD hELLO"。

public class Main {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(transform(str));;
    }
    private static String transform(String str) {
    	//write your code here . . .
    }
}

解法一

遍历字符串,遇到小写字母则用 Character 类的 toUpperCase() 和 toLowerCase() 方法进行字母的大小写转换。然后使用中间变量 temp 进行拼接.

public class Main {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(transform(str));;
    }
    private static String transform(String str) {
    	
        String temp = "";
        String result = "";
        char ch;
        for (int i = 0; i < str.length(); i++) {
            ch = str.charAt(i);
            if(ch >= 'a' && ch <= 'z'){ //字母是否为小写
                temp = temp + Character.toUpperCase(ch); //小写字母转大写字母,并添加到temp后面
            }else if(ch >= 'A' && ch <= 'Z'){ //字母是否为大写
                temp = temp + Character.toLowerCase(ch); //大写字母转小写字母,并添加到temp后面
            }else {
                temp = ch + temp; //空格添加到temp前面
                result = temp + result; //temp添加到result前面
                temp = ""; //temp置为空白字符串
            }
        }
        result = temp + result; //temp添加到result前面
        return result.toString();
    }
}

解法二

解法一中使用 String 类保存拼接字符串,每一次拼接都会创建新的 String 对象,会消耗大量内存空间。可以改成使用 StringBuilder 进行拼接,StringBuilder 拼接时不会产生新的对象,避免内存大量损耗。

public class Main {
    public static void main(String[] args) {
        String str = "Hello World";
        System.out.println(transform(str));;
    }
    private static String transform(String str) {
    	//write your code here . . .
        StringBuilder sb = new StringBuilder();
        StringBuilder result = new StringBuilder();
        char ch;
        for (int i = 0; i < str.length(); i++) {
            ch = str.charAt(i);
            if(ch >= 'a' && ch <= 'z'){
                sb.append(Character.toUpperCase(ch));
            }else if(ch >= 'A' && ch <= 'Z'){
                sb.append(Character.toLowerCase(ch));
            }else {
                sb.insert(0, ch);
                result.insert(0, sb);
                sb.delete(0, sb.length());
            }
        }
        result.insert(0, sb);
        return result.toString();
    }
}

(编辑:成都站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!