反转字符串
public static String reverse(String s) {
// 将字符串转换为字符数组
char[] chars = s.toCharArray();
int left = 0, right = chars.length - 1;
// 反转字符数组
while (left < right) {
char temp = chars[left];
chars[left] = chars[right];
chars[right] = temp;
left++;
right--;
}
// 将字符数组转换为字符串
return new String(chars);
}
判断一个数字是否是回文数字
public static boolean isPalindrome(int x) {
// 如果 x 是负数或者末尾是 0 但不是 0 本身,直接返回 false
if (x < 0 || (x % 10 == 0 && x != 0)) {
return false;
}
int reversed = 0;
while (x > reversed) {
// 将 x 的末尾数字取出,加入到 reversed 的末尾
reversed = reversed * 10 + x % 10;
// 将 x 的末尾数字删除
x /= 10;
}
// 如果数字长度为奇数,reversed 最中间的数字不用考虑
return x == reversed || x == reversed / 10;
}
回文字符串
public static boolean isPalindrome(String s) {
// 将字符串转换为小写字母,并去掉所有非字母和数字的字符
s = s.toLowerCase().replaceAll("[^a-z0-9]", "");
int left = 0, right = s.length() - 1;
// 检查左右两端的字符是否相等
while (left < right) {
if (s.charAt(left) != s.charAt(right)) {
return false;
}
left++;
right--;
}
return true;
}
字符串转数字:
public static int myAtoi(String s) {
// 去掉字符串前后的空格
s = s.trim();
if (s.isEmpty()) {
return 0;
}
// 判断正负号
int sign = 1;
int i = 0;
if (s.charAt(0) == '+') {
i++;
} else if (s.charAt(0) == '-') {
sign = -1;
i++;
}
// 转换数字
int result = 0;
while (i < s.length() && Character.isDigit(s.charAt(i))) {
int digit = Character.getNumericValue(s.charAt(i));
// 处理溢出情况
if (result > (Integer.MAX_VALUE - digit) / 10) {
return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
}
result = result * 10 + digit;
i++;
}
return sign * result;
}