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