当前位置: 首页 > article >正文

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

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;
}

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


http://www.kler.cn/news/150040.html

相关文章:

  • 题目标题:卫星定位(胡宁静) 暴力解法
  • php如何对比浮点数大小(bccomp函数)
  • 代码的并发问题
  • ASCII sorting
  • (亲测有效)解决windows11无法使用1500000波特率的问题
  • RabbitMQ消息模型之发布订阅Publish-Subscribe
  • docker中安装mysql,远程连接
  • 基于docker的onlyoffice使用--运行JavaSpringExample
  • 你了解vue的diff算法吗?
  • go学习之文件操作与命令行参数
  • leetcode 283. 移动零
  • JavaScript基础知识总结
  • Java 关于批量插入遇到的问题 -sqlserver
  • 配置阿里云的yum仓库
  • qt-C++笔记之主线程中使用异步逻辑来处理ROS事件循环和Qt事件循环解决相互阻塞的问题
  • 数学加速器:Python numpy.add函数全解读
  • 基于单片机的肺活量检测系统(论文+源码)
  • 树与二叉树堆:堆的意义
  • SpringBoot整合EasyExcel实现复杂Excel表格的导入导出功能
  • DNS/ICMP协议、NAT技术
  • goweb入门教程
  • Python dns域名解析(dns.resolver)
  • 【LeetCode:1670. 设计前中后队列 | 数据结构设计】
  • spring-webflux的一些概念的理解
  • 【Rust】基本的语法概念
  • 唯创知音WT588F02B-8S语音芯片:灵活更换语音内容,降低开发成本与备货压力
  • python每日一题——12最小覆盖子串
  • GoLang切片
  • Leetcode算法系列| 1. 两数之和(四种解法)
  • OpenLDAP配置web管理界面PhpLDAPAdmin服务-centos9stream