算法通关村第十二关|青铜|字符串转换整数

1.转换成小写字母

原题:力扣709.

字符串大写转小写有现成的API使用,但是我们也可以自己来实现。

使用或运算进行加操作能提高效率,因为 32 对应的二进制表示为 00100000 ,而大写字母的范围 [65, 90] 的二进制表示在 00100000 的为 1 的位置均为 0 ,所以直接或操作就可以实现和加 32 一样的效果。

class Solution {
    public String toLowerCase(String s) {
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            char ch = s.charAt(i);
            if (ch >= 65 && ch <= 90) {
                ch |= 32;
            }
            sb.append(ch);
        }
        return sb.toString();
    }
}

2.字符串转换整数(atoi)

原题:力扣8.

用 index 遍历字符串数组。

public int myAtoi(String str) {
	int len = str.length();
	char[] charArray = str.toCharArray();
	int index = 0;
	while (index < len && charArray[index] = ' ') {
        index++;
    }
	if (index == len) {
        return 0;
    }
	int sign = 1;
	char firstChar = charArray[index];
	if (firstChar == '+') {
        index++;
    } else if (firstChar == '-') {
        index++;
        sign = -1;
    }
	int res = 0;
	while (index < len) {
        char currChar = charArray[index];
        if (currChar > '9' || currChar < '0') {
            break;
        }
        // 处理溢出情况
        if (res > Integer.MAX_VALUE / 10 || (res == Integer.MAX_VALUE / 10 && (currChar - '0') > Integer.MAX_VALUE % 10)) {
            return Integer.MAX_VALUE;
        }
        if (res < Integer.MIN_VALUE / 10 || (res == Integer.MIN_VALUE / 10 && (currChar - '0') > -(Integer.MIN_VALUE % 10))) {
            return Integet.MIN_VALUE;
        }
        // 为了便于处理溢出情况,每次给 res 赋值都带 sign ,保证 res 的正负性
        res = res * 10 + sign * (currChar - '0');
        index++;
    }
	return res;
}

如果对您有帮助,请点赞关注支持我,谢谢!❤
如有错误或者不足之处,敬请指正!❤
个人主页:星不易 ❤
算法通关村专栏:不易|算法通关村 ❤

你可能感兴趣的:(不易,算法通关村,算法,java,算法通关村)