LintCode1343-两字符串和,1535-转换成小写字母
第1343题:
描述
给定两个仅含数字的字符串,你需要返回一个由各个位之和拼接的字符串
- A 和 B 是由数字组成的字符串
样例 1:
输入:
A = "99"
B = "111"
输出:
"11010"
解释:
格式化后:A = "099",B = "111"
因为 0 + 1 = 1,9 + 1 = 10,9 + 1 = 10
连接之后的结果是 "1" + "10" + "10" -> "11010"
样例 2:
输入:
A = "2"
B = "321"
输出:
"323"
解释:
格式化后:A = "002",B = "321"
因为 0 + 3 = 3,0 + 2 = 2,2 + 1 = 3
连接之后的结果是 "3" + "2" + "3" -> "323"
将字符转化为数字并进行计算通常有3种方式:
以该题为例
1.(aStringBuilder.charAt(j) - '0') + (bStringBuilder.charAt(j) - '0')
(最推荐)。
2.语义明确,简洁:Character.getNumericValue
。
3.符合 parseInt
逻辑: 使用 Integer.parseInt(String.valueOf(char))
,但速度最慢
代码如下:
public class Solution {
/**
* @param a: a string
* @param b: a string
* @return: return the sum of two strings
*/
public String sumofTwoStrings(String a, String b) {
// write your code here
int m=a.length();
int n=b.length();
int offSet=Math.abs(m-n);
StringBuilder aStringBuilder=new StringBuilder(a);
StringBuilder bStringBuilder=new StringBuilder(b);
//同步长度
if(m>n)
{ //将b追加长度
for(int i=1;i<=offSet;i++)//i指的是个数
{
bStringBuilder.insert(0,'0');
}
}else if(m<n)
{
//将a追加长度
for(int i=1;i<=offSet;i++)//i指的是个数
{
aStringBuilder.insert(0,'0');
}
}
int length=Math.max(m,n);
StringBuilder finalStringBuilder=new StringBuilder();
for(int j=0;j<length;j++)
{
finalStringBuilder.append((aStringBuilder.charAt(j)-'0'+bStringBuilder.charAt(j)-'0')+"");
}
return finalStringBuilder.toString();
}
}
第1535题:
描述
实现函数 ToLowerCase()
,该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串.
示例 1:
输入: "Hello"
输出: "hello"
示例 2:
输入: "here"
输出: "here"
示例 3:
输入: "LOVELY"
输出: "lovely"
代码如下:
public class Solution {
/**
* @param s: the input string
* @return: The lower case string
*/
public String toLowerCase(String s) {
// Write your code here
char[] sCharArray=s.toCharArray();
for(int i=0;i<sCharArray.length;i++)
{
if(sCharArray[i]>='A'&&sCharArray[i]<='Z')
{
sCharArray[i]=(char)(sCharArray[i]+32);
}
}
StringBuilder stringBuilder=new StringBuilder();
for(int j=0;j<sCharArray.length;j++)
{
stringBuilder.append(sCharArray[j]);
}
return stringBuilder.toString();
}
}