第一题 最后一个单词的长度
- 题如其名,就是输入一串单词字符,然后返回最后一个单词的长度
- 贴上代码
class Solution {
public int lengthOfLastWord(String s) {
int len=s.length();//s的长度
int res=0;//结果
for (int i=len-1;i>=0;i--){
String chart= String.valueOf(s.charAt(i));//遍历
if (!chart.equals(" ")) res++;//最后的不是空值就是遍历到最后一个单词了,res++计算长度
// System.out.println(res);
if (res>0 && chart.equals(" ")) return res;//空值,最后一个单词结束,返回结果
if (i==0) return res;//只有一个单词的情况下,直接遍历到i=0,返回结果
}
return 0;
}
}
第二题 加一
- 意思就是非空非负的整数,每一位数存在数组的一个位置,输入一个数组,返回这个数组加一后的值,需要注意的是这个数可能是9,从而导致进一的情况。
- 贴上代码
/**
* 加法,注意999
*/
class Solution {
public int[] plusOne(int[] digits) {
int len= digits.length;
//当个位数小于9时,直接将个位数+1并返回
if (digits[len-1]<9){
digits[len-1]=digits[len-1]+1;
return digits;
}
//运行到这个位数必是9
//当个位数是9时,出现39,649,299,898799,等情况
for (int i=len-1;i>=0;i--){
if (digits[i]==9){
digits[i]=0;//9+1=10,,,进1留0
}else {
//没有9了,直接返回
digits[i]=digits[i]+1;
return digits;
}
}
//考虑到出现9,99,999的情况,全是99999时,上面循环已转化成00000
//定义新数组
int[] res = new int[len + 1];
for (int i=0;i<len+1;i++){
res[i]=0;
}
res[0]=1;
return res;
}
}
第三题 二进制求和
class Solution {
public String addBinary(String a, String b) {
StringBuffer ans = new StringBuffer();
int n = Math.max(a.length(), b.length()), carry = 0;
for (int i = 0; i < n; ++i) {
carry += i < a.length() ? (a.charAt(a.length() - 1 - i) - '0') : 0;
carry += i < b.length() ? (b.charAt(b.length() - 1 - i) - '0') : 0;
ans.append((char) (carry % 2 + '0'));
carry /= 2;
}
if (carry > 0) {
ans.append('1');
}
ans.reverse();
return ans.toString();
}
}
第四题
明天再来,已经秃了!!!