classSolution{publicStringlongestPalindrome(String s){int len =0;int begin =0;int n = s.length();//从一个中心点出发, 利用回文的特性for(int i =0; i < n; i++){//遍历奇数情况int left = i;int right = i;while(left >=0&& right != n && s.charAt(left)== s.charAt(right)){
left--;
right++;}if(right - left -1> len){
begin = left +1;
len = right - left -1;}//遍历偶数情况
left = i;
right = i +1;while(left >=0&& right != n && s.charAt(left)== s.charAt(right)){
left--;
right++;}if(right - left -1> len){
begin = left +1;
len = right - left -1;}}return s.substring(begin, begin + len);}}
classSolution{publicStringaddBinary(String a,String b){StringBuffer ret =newStringBuffer();int cur1 = a.length()-1;int cur2 = b.length()-1;int t =0;while(cur1 >=0|| cur2 >=0|| t !=0){if(cur1 >=0)
t += a.charAt(cur1--)-'0';if(cur2 >=0)
t += b.charAt(cur2--)-'0';
ret.append(t %2);
t = t /2;}
ret.reverse();return ret.toString();}}
classSolution{publicStringmultiply(String num1,String num2){//逆序, 后续好操作char[] n1 =newStringBuffer(num1).reverse().toString().toCharArray();char[] n2 =newStringBuffer(num2).reverse().toString().toCharArray();int n = n1.length;int m = n2.length;int[] tmp =newint[m + n -1];//相乘, 不处理进位for(int i =0; i < n; i++){for(int j =0; j < m; j++){
tmp[i + j]+=(n1[i]-'0')*(n2[j]-'0');}}//处理进位int cur =0;int t =0;StringBuffer ret =newStringBuffer();while(cur < tmp.length || t !=0){if(cur < tmp.length) t += tmp[cur++];
ret.append(t %10);
t /=10;}//处理前导0while(ret.length()>1&& ret.charAt(ret.length()-1)=='0'){
ret.deleteCharAt(ret.length()-1);}return ret.reverse().toString();}}