算法通关村第十二关—字符串转换(青铜)

news2024/11/17 13:51:21

一、转换成小写字母

LeetCode709.给你一个字符串s,将该字符串中的大写字母转换成相同的小写字母,返回新的字符串。

示例1:
输入:s="Hello"
输出:"hello"
示例2:
输入:s="here"
输出:"here"
示例3:
输入:s="LOVELY"
输出:"lovely"

1.利用ASCII码转换

常见ASCII范围是:a-z:97-122 A-Z:65-90 0-9:48-57
当然,做题记不住的时候可以用ASCII码对应的字符表示

//此处用字符数组进行转换,也可以用StringBuffer
public static String toLowerCase(String s){
int n = s.length();
char[] chars = s.toCharArray();
for(int i = 0; i < n; ++i){
if(chars[i] >= 65 && chars[i] <= 90){//65可用'A'代替
chars[i] += 32;
}
String str = new String(chars);
return str;
}

2.利用字符串相关方法

toUpperCase(): 转换大小写,小变大
toLowerCase(): 转换大小写,大变小

class Solution {
    public String toLowerCase(String s) {
        return s.toLowerCase();
    }
}

二、字符串转换整数(atoi)

LeetCode8.本题的题目要求比较长,看原文:
image.png

public static int myAtoi(String str){
int len = str.length();
char[] charArray = str.toCharArray();
//1、去除前导空格
int index =0;
while(index len && charArray[index] == '') index++;

//2、如果已经遍历完成(针对极端用例"     ")
if (index =len){
return 0;
}

//3、如果出现符号字符,仅第1个有效,并记录正负
int sign = 1;
char firstChar = charArray [index];
if (firstChar =='+') index++;
else if (firstChar == '-'){
index++;
sign =-1;
}
//4、将后续出现的数字字符进行转换
//不能使用1ong类型,这是题目说的
int res = 0;
while(index < len){
char currChar = charArray[index];
//4.1先判断不合法的情况
if (currChar >'9' || currChar <'0') break;
//题目中说只能存储32位大小的有符号整数,下面两个1f分别处理整数和负数的情况。
//提前判断乘以10以后是否越界,但res*10可能会越界,所以这里使用Integer.MAX_VALUE / 10,这样一定不会越界
//这是解决溢出问题的经典处理方式
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 Integer.MIN_VALUE;
}
//合法的情况下,才考虑转换,每一步都把符号位乘进去
//想想这里为什么要带着sign乘
res = res * 10 + sign * (currChar -'0');
index++;
}
return res;
}
class Solution {
    public int myAtoi(String s) {
        StringBuffer str = new StringBuffer(s);

        while (str.length() > 0) {
            if (str.charAt(0) == ' ') str.delete(0, 1);
            else break;
        }
        if (str.length() == 0) return 0;

        int judge = 1;
        if (str.charAt(0) == '+') str.delete(0, 1);
        else if(str.charAt(0) == '-'){
                judge = -1;
                str.delete(0, 1);
        }
        
        int sum = 0;
        int max = Integer.MAX_VALUE;
        int min = Integer.MIN_VALUE;
        for(int n = 0; n < str.length(); n++){
            int a = (int)str.charAt(n) - '0';
            if(a >= 0 && a <= 9){
                if(judge == 1){
                    if(sum > max / 10 || (sum == max / 10 && a > max % 10)) return max;
                    else sum = sum * 10 + a;
                }
                if(judge == -1){
                    if((-1) * sum  < min / 10 || ((-1) * sum == min / 10 && (-1)*a < min % 10)) return min;
                    else sum = sum * 10 + a;
                }

            }
            else break;
        }
        return sum * judge;

    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1314192.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

万户 OA OfficeServer.jsp 任意文件上传漏洞复现

0x01 产品简介 万户OA是面向政府组织及企事业单位的FlexOffice自主安全协同办公平台。 0x02 漏洞概述 万户OA OfficeServer.jsp接口存在任意文件上传漏洞,攻击者可通过该漏洞上传任意文件从而控制整个服务器。 0x03 复现环境 FOFA: (banner="OASESSIONID" &a…

Vmware Windows10安装Apache php

文章目录 一、下载必要的软件二、安装Apache三、安装php四、php连接Apache五、测试 一、下载必要的软件 Apache&#xff1a;https://www.apachelounge.com/download/ PHP&#xff1a;http://windows.php.net/download/ 二、安装Apache 将下载的压缩包解压&#xff0c;移动里…

0基础学习VR全景平台篇第128篇:720VR全景拍摄设备推荐

上课&#xff01;全体起立~ 大家好&#xff0c;欢迎观看蛙色官方系列全景摄影课程&#xff01; 本篇教程&#xff0c;小编为大家推荐720VR全景拍摄所需要的设备器材。上节我们提到&#xff0c;理论上任意相机和镜头都能够拍摄全景&#xff0c;但为了标准化制作流程&#xff0…

Golang在 Docker 中交叉编译 Windows

前言&#xff1a; 前端时间把本地的 Golang 开发环境卸载了&#xff0c;如果编写代码的话就是启动一个 Golang 的 Docker 容器。这样做对于服务端开发本来也是没有问题的&#xff0c;但是有时候想要把程序放到 Windows 上面来执行&#xff0c;那就遇到麻烦了。因为 Docker 容器…

VSCode解决本地浏览器需要跨域问题

这里写目录标题 测试用代码执行代码后控制台报错现象解决方案 测试用代码 先把测试用的代码贴出来 测试代码结构 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Com…

git checkout进行更改分支

git clone https://gitee.com/yaleguo1/minit-learning-demo.git下载代码。 cd minit-learning-demo/进入目录里边。 ls -l看一下当前分支的内容。 git checkout geek_chapter02更改分支到geek_chapter02。 ls -l看一下目录里边的内容。

【Axure RP9】的详细安装及Axure入门应用

目录 一 Axure入门安装 1.1 Axure是什么? 1.2 Axure应用场景 1.3 Axure安装 1.3.1 汉化 1.3.2 授权 二, Axure应用 1.1 Axure软件界面概述 1.2 Axure的应用 1.2.1备份 1.2.2 视图显示及网格设置 1.2.3 生成HTML文件 1.2.4 备注说明 一 Axure入门安装 1.1 Axure…

如何发布自定义 npm 组件包

准备工作 1. 注册 npm 账号 还没有 npm 账号&#xff1f;去官网注册&#xff1a; https://www.npmjs.com 需要记住用户名、密码、邮箱&#xff0c;后面需要用到。 2. 查看本地 npm 镜像&#xff0c;如果不是默认的&#xff0c;需要改回来 npm config get registry重置镜像路…

安装统信UOS服务器操作系统1060

原文链接&#xff1a;安装统信UOS服务器操作系统1060 hello&#xff0c;大家好啊&#xff01;今天我要给大家介绍的是如何安装统信UOS服务器操作系统1060。统信UOS是一款基于Linux内核&#xff0c;专为中国市场定制开发的操作系统。它不仅提供了良好的用户体验&#xff0c;还在…

翻译: 为什么需要微调大模型 Why Fine-tuning LLM

虽然RAG提供了一种方式来给大型语言模型提供额外的信息&#xff0c;但还有另一种叫做微调&#xff08;fine-tuning&#xff09;的技术&#xff0c;也是给它更多信息的一种方式。特别是&#xff0c;如果你有的上下文比大型语言模型的输入长度或上下文窗口长度更大&#xff0c;那…

单片机Freertos入门(二)任务的创建、删除

1、串口配置 首先将串口进行配置&#xff0c;后续经常会应用&#xff0c;具体步骤点击&#xff1a;串口配置。 2、任务 创建一个任务&#xff0c;就是开辟一个空间、每个任务中都会有while&#xff08;1&#xff09;死循环。 2.1相关函数 动态创建&#xff1a;xTaskCreate…

Linux第一个小程序——进度条

Linux第一个小程序——进度条 1. 前言2. 缓冲区概念3. \r && \n4. 进度条实现4.1 初级进度条4.2 升级进度条 1. 前言 在我们写这个小程序之前&#xff0c;我们要用到我们学的三个知识点 gcc的使用vim的使用make/makefile的使用 除此之外还需要一些其他的知识点&…

如何在jenkins容器中安装python+httprunner+pytest+git+allure(一)

背景&#xff1a; API接口自动化使用python语言实现&#xff0c;利用httprunner框架编写自动化用例场景&#xff08;执行的时候还是依赖pytest),使用jenkins自动构建git上的源代码&#xff0c;并产生allure报告可视化展示API执行结果。 步骤 1.进入jenkins容器 注意使用roo…

数据库和数据仓库的区别

数据仓库是在数据库已知大量存在的前提下&#xff0c;为了进一步挖掘数据资源&#xff0c;为了决策需要产生的&#xff1b;数据仓库在设计的时候有意添加反范式设计&#xff0c;目的是提高查询效率 对比内容数据库数据仓库数据内容近期值历史的 归档的数据数据目标面向业务操作…

ArcGIS Pro SDK 右键获取选中的图层

需求&#xff1a; 获取右键选中的图层 解决方法&#xff1a; 地图页面获取选中的图形 // 获取所选要素 var firstFeatureLayer MapView.Active.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>().FirstOrDefault(); 布局页面获取选中的地图框 Layout layout …

Tomcat 十大安全优化方法(详解版)

目录 1 talnet管理端口保护 2 AJP连接端口保护 3 禁用管理器 4 降权启动 5 控制文件列表的访问 6 隐藏版本信息 7 server header重写 8 限制IP访问 9 修改脚本权限 10 访问日志格式规范 1 talnet管理端口保护 配置内容&#xff1a; &#xff08;1&#xff09;修改默…

element-plus 结合Vue Router时出现的问题及解决方法之一

1、单文件应用element-plus中的Menu 侧边栏 <template><el-row class"tac"><el-col :span"12"><!-- <h5 class"mb-2">Custom colors</h5> --><el-menuactive-text-color"#ffd04b"background-…

GRU,LSTM,encoder-decoder架构,seq2seq的相关概念

门控记忆单元&#xff08;GRU&#xff09; GRU模型有专门的机制来确定应该何时更新隐状态&#xff0c;以及应该何时重置隐状态。这些机制是可学习的。门控循环单元具有以下两个显著特征&#xff1a; 重置门有助于捕获序列中的短期依赖关系&#xff1b;更新门有助于捕获序列中…

Axios入门案例——后端学习

目录 后端准备 导入依赖 解决跨域 User实体类 DemoController测试接口 前端准备 项目结构 axios.js axios.html 开始测试 后端结果 前端结果 后端准备 导入依赖 案例会用到以下的三个依赖。 <dependency><groupId>org.springframework.boot</gro…

案例066:基于微信小程序的家政预约设计与实现

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…