题目1: 判断是否为回文字符串
解题思路①:
重新构建一个字符串str2
将str2反转, 与原来的字符串对比是否相同
import java.util.*;
public class Solution {
public boolean judge (String str) {
StringBuilder str1 = new StringBuilder(str);
String str2 = str1.reverse().toString();
if(str.equals(str2)){
return true;
}
return false;
}
}
解题思路②:
利用双指针
在字符串首尾各创建一个指针, 两个指针所指向的值相同则为回文字符串
import java.util.*;
public class Solution {
public boolean judge (String str) {
if(str == null || str.length() == 0){
return false;
}
for(int i = 0, j = str.length() - 1; i < j; i++, j--){
if(str.charAt(i) != str.charAt(j)){
return false;
}
}
return true;
}
}
题目2: 求平方根
解题思路:
题中要求时间复杂度是O(logn), 看见O(logn)就直接使用二分法
import java.util.*;
public class Solution {
public int sqrt (int x) {
// write code here
long left = 1, right = x, mid = (left + right) / 2;
while(left != mid){
if(mid * mid == x){
break;
}else if(mid * mid > x){
right = mid;
}else{
left = mid;
}
mid = (left + right) / 2;
}
return (int)mid;
}
}