最后一个单词的长度
思路:这个题目应该是比较简单的。
首先容易想到的是从后往前遍历字符串,这里需要注意一点,如果最后的字符是个空格,需要加以甄别。
定义一个变量length用来累加长度,如果当前字符不是空格字符,变量+1。
当length不为0,且当前字符为空格字符时,此时结束变量,返回length值。
加一
思路:首先这个数组加一,需要从末尾元素加一(此时如果遍历数组,则需要从尾部开始遍历),这就有两种情况:
1、末尾数字0~8,加一即可,返回原数组。
2、末尾数字9,加一后变为0,需要进位。
3、进位之后,下一个元素仍需加一,加一的操作可以重复1、2两个步骤。 但是如果遇到9999这种全是9的数字,按照以上步骤操作完毕之后整个数组就成了0000,此时可以重新初始化一个数组,将首个元素置为1,其他元素默认0即可。
看这个题的解法真是巧妙啊,对大佬五体投地~~~
二进制求和
这道题我的第一反应是,很简单,当我使用竖式相加的方法写了不到一半的时候,我才发现事情的严重性,意识到自己写出来的有多垃圾。。。
看了题解之后,有两处很震惊:
1、for循环竟然可以这样用。
2、char类型的字符可以相减。
思路:
从后向前遍历的方向没错,使用for循环,可以使循环的次数与最长字符串的长度相等,这样可以保证如果有进位的话,可以正常运行。
定义sum,第一累加进位,第二累加字符串a的当前字符,第三累加字符串b的当前字符。
使用char的减法,可以判断当前字符是'0'还是'1',最后的模运算,可以保证结果是0还是1(之前我想到的是:如果a.charAt(i) == b.charAt(j),则当前位结果是0,否则是1,没考虑到进位,大意了)。
加油!为自己。