Leetcode __转换成小写字母

问题描述:

实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。

示例 1:

输入: “Hello”
输出: “hello”
示例 2:

输入: “here”
输出: “here”
示例 3:

输入: “LOVELY”
输出: “lovely”

想法

  1. 遍历字符串charAt(i),取每一位
  2. 判断每位上是否是小写字符,是则转换,不是则循环写一位

    1. 判断小写字母的方法一:
      Character.isUpperCase(c)是否是大写字母,转成小写Character.toLowerCase(c);
      Character.isLowerCase(c)是否是大写字母,转成大写Character.toUpperCase(c);

    2. 判断小写字母的方法二:
      通过ASCII码判断字母大小写 ASCII在65-90之间是大写,97-122是小写,大转小加32 小转大减去32

实现 一

class Solution {
    public String toLowerCase(String str) {
        if(str==null||str.length()==0){
            return null;
        }
        char[] chars =str.toCharArray();
        int len = chars.length;
        for (int i = 0;i<len;i++){
            char c = chars[i];
            if(Character.isUpperCase(str.charAt(i))){
                chars[i]=  Character.toLowerCase(chars[i]);//这里要注意赋给的是当前循环变量chars[i],而不是局部变量c
            }
        }
        String resule  = new String(chars);
        return resule;

    }
}

这里写图片描述

注:

当对字符串转成char数组之后,对于每个符合要求的char进行重新赋值,赋的也是char数组当中的,要重新写入字符串中才能表现出来。
问: str.charAt(i)= Character.toLowerCase(str.charAt(i));???Variable expected
答:

    public char charAt(int index) {
        if ((index < 0) || (index >= value.length)) {
            throw new StringIndexOutOfBoundsException(index);
        }
        return value[index];
    }
private final char value[];

这里的数组是fianl修饰的不可修的,想要修改new StringBuilder()???

        StringBuilder stringBuilder = new StringBuilder(str);
        char a = stringBuilder.charAt(3);
        char b = Character.toLowerCase(a);
        stringBuilder.setCharAt(3,b);

实现二

class Solution {
    public String toLowerCase(String str) {
        if (str == null || str.length() == 0) {
            return null;
        }
        byte[] bytes = str.getBytes();
        for (int i = 0, length = bytes.length; i < length; i++) {
            //如果ASCII在65-90之间为大写,加上32变为小写
            if (bytes[i] >= 65 && bytes[i] <= 90) {
                bytes[i] += 32;
                 // bytes[i] = bytes[i]+32;这是错误的,为什么不行呢?
                 Java中的byteshortchar进行计算时都会提升为int类型,
                分开表示两部 运算 赋值,运算提升,赋值的时候降回byte,需要转换类型 bytes[i] = (byte)(bytes[i]+  32);
                +=就是在本单位内运算,+=相当于告诉程序 这个位置的数据+32

            }

        }
        String s = new String(bytes);
        return s;


    }
}

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值