新加坡域名注册网站,镇江论坛,怎样做企业推广,华强北商城官网入口一、转换成小写字母
LeetCode709.给你一个字符串s#xff0c;将该字符串中的大写字母转换成相同的小写字母#xff0c;返回新的字符串。
示例1#xff1a;
输入#xff1a;sHello
输出#xff1a;hello
示例2#xff1a;
输入#xff1a;s将该字符串中的大写字母转换成相同的小写字母返回新的字符串。
示例1
输入sHello
输出hello
示例2
输入shere
输出here
示例3
输入sLOVELY
输出lovely1.利用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.本题的题目要求比较长看原文
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;}
}