- 字符串相加
思路:使用双指针分别从两个字符串的尾部向前遍历,如果其中一个指针小于零,则该位数字当0看待即可
class Solution {
public String addStrings(String num1, String num2) {
int jinwei = 0;
StringBuffer s = new StringBuffer();
int i = num1.length() - 1, j = num2.length() - 1;
while (i >= 0 || j >= 0) {
int x = i >= 0 ? num1.charAt(i) - '0' : 0;
int y = j >= 0 ? num2.charAt(j) - '0' : 0;
s.append((x + y + jinwei) % 10);
jinwei = (x + y + jinwei) / 10;
i--;
j--;
}
if (jinwei != 0) {
s.append(jinwei);
}
return s.reverse().toString();
}
}
- 字符串中的单词数
思路:用trim去掉首尾空格,然split分割
class Solution {
public int countSegments(String s) {
String t = s.trim();
if (t.equals("")) {
return 0;
}
return t.split("\\s+").length;
}
}
- 排列硬币
思路:循环相加然后进行判断即可,注意sum为long防止溢出
class Solution {
public int arrangeCoins(int n) {
long sum = 0;
for (int i = 1; i <= n; i++) {
sum += i;
if (sum == n) {
return i;
} else if (sum > n) {
return i - 1;
}
}
return 0;
}
}