首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >11 To lower case

11 To lower case

作者头像
devi
发布2021-08-18 15:52:24
发布2021-08-18 15:52:24
4860
举报
文章被收录于专栏:搬砖记录搬砖记录

题目

Implement function ToLowerCase() that has a string parameter str, and returns the same string in lowercase.

Example 1:

Input: “Hello” Output: “hello”

Example 2:

Input: “here” Output: “here”

Example 3:

Input: “LOVELY” Output: “lovely”

分析

题意:把大写转换成小写,如果是小写,则保持小写。 方法:

  1. 调用内置的函数
  2. 百度查了下ASCII码,小写是[97,122] ,而小写比大写多32,因此,拿到字符串的每个字符,如果在[97,122]之间,则不操作,如果在[65,90]之间,则加32

涉及到的问题:

  • 怎样拿出字符串中的字符?
  • 保存新字符串的策略?

解答

代码语言:javascript
复制
class Solution {
    public String toLowerCase(String str) {
        StringBuilder sb = new StringBuilder();
        for(int i=0;i<str.length();i++){
            char tmp = str.charAt(i);
            if(tmp>=65 && tmp<=90)
                tmp+=32;
            sb.append(tmp); 
        }
        return String.valueOf(sb);
    }
}

注意stringBuild转string要用String.valueOf(sb),或者使用sb.toString()

上面这算法内存开销比较大,看看评论区解答。

String本身就是字符数组,数组的最大优点就是适合查改,因此将String转为数组操作会更快更好。

代码语言:javascript
复制
    public String toLowerCase(String str) {
        char[] a = str.toCharArray();
        for (int i = 0; i < a.length; i++)
            if ('A' <= a[i] && a[i] <= 'Z')
                a[i] = (char) (a[i] - 'A' + 'a');
        return new String(a);
    }

解释:

  • a[i]-‘A’+'a’等价于a[i]+32 (当你不知道A与a相差32的时候可以这样做)
  • a[i]-‘A’+'a’前面必须进行强转,因为char的本质其实是int类型,进行运算之后就变成int类型了。
  • (char) (a[i] - ‘A’ + ‘a’);可以替换为(char)(a[i] | 32) ;逻辑或相当于+
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/01/31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目
  • 分析
  • 解答
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档