Add Binary
Given two binary strings, return their sum (also a binary string).
For example,
a = “11”
b = “1”
Return “100”.
java
思路:先补0,再倒序相加,再反转
写的有点啰嗦。。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49public class Solution {
public String addBinary(String a, String b) {
int la=a.length();
int lb=b.length();
int carry=0;
int maxLen=Math.max(la, lb);
int[] num=new int[maxLen+1];
int count=0;
if(la<maxLen)
{
for(int i=la;i<maxLen;i++)
{
a='0'+a;
}
}
else if(lb<maxLen)
{
for(int i=lb;i<maxLen;i++)
{
b='0'+b;
}
}
for(int i=maxLen-1;i>=0;i--)
{
int temp=a.charAt(i)-'0'+b.charAt(i)-'0'+carry;
num[count++]=temp%2;
if(temp>=2)
{
carry=1;
}
else
{
carry=0;
}
}
if(carry==1)
{
maxLen++;
num[count]=1;
}
String result="";
for(int i=0;i<maxLen;i++)
{
result+=num[i];
}
return new StringBuffer(result).reverse().toString();
}
}
学习
学java好几天了,听同学说java处理字符串比较方便,但目前并未感觉到,可能自己不了解的函数太多了,这儿放一些以后刷题可能会经常遇到的字符串处理函数。
java的String类感觉并没有C++的string类型好使,主要是不能改变特定位置的元素值,只能访问。而且java的String类,是不可变的,如String s=”hello”; s=s+”world”; 此时s指向了不同的字符串对象,而不是对原来的字符串进行了改变。这样产生了额外的临时变量。而StringBuffer和StringBuilder可以避免这一问题。StringBuffer和StringBuilder功能几乎一样,只是StringBuffer是线程安全的。
StringBuffer用法
- String转StringBuffer:StringBuffer sb= new StringBuffer(str)
- StringBuffer转String: sb.toString()
- 反转字符串,可以用StringBuffer的reverse().
- StringBuffer
- StringBuffer的插入:sb.insert(0,”hello “); //sb=”hello xxx”。在index之前添加字符串 StringBuffer不能用 “+”连接字符串。
- 改变某个字符的值:sb.replace(start,end,”XXX”); 如
1
2
3StringBuffer sb=new StringBuffer("aaaa");
sb.replace(2, 3, "b");
System.out.println(sb); //输出aaba, [start,end)
String用法
- 可以通过a=”字符串”+a 或者 a=a+”字符串” 来进行前后添加字符串。
- String对象与其他类型的转换
1
2
3
4
5
6
7
8
9
10
11
12
13//将String转为char[]
String s="java";
char[] ch=s.toCharArray();
//将char数组或者char对象或者int对象转为String(转一个字符和转多个字符一样的)
int num=100;
String str1=String.valueOf(num); //str1="100"而非asiic码
//String转int
int num=Integer.parseInt(str);
//此外什么类型都可以通过XXX.toString()转为String
String s = Integer.toString(i);
我们应当注意到,当object为null时,String.valueOf(object)的值是字符串”null”,而不是null!在使用过程中切记要注意。