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!在使用过程中切记要注意。