回文数
给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数
public boolean isPalindrome(int x) {
//如果x小于0,直接返回false
if(x<0)return false;
//temp存放x原值
int y=0,i=0,temp=x;
while(x>0){
int g=x%10;
y=10*y+x%10;
i++;
x/=10;
}
//如果y等于原x值,返回true
if(temp==y)return true;
return false;
}
罗马数字转整数
private static int romanToInt(String s) {
int num = 0;
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
if (chars[i] == 'I') {
// I 可以放在 V (5) 和 X (10) 的左边,来表示 4 和 9。
if (i + 1 < chars.length && (chars[i + 1] == 'V' || chars[i + 1] == 'X')) num -= 1;
else num += 1;
} else if (chars[i] == 'V') num += 5;
else if (chars[i] == 'X') {
//X 可以放在 L (50) 和 C (100) 的左边,来表示 40 和 90。
if (i + 1 < chars.length && (chars[i + 1] == 'L' || chars[i + 1] == 'C')) num -= 10;
else num += 10;
} else if (chars[i] == 'L') num += 50;
else if (chars[i] == 'C') {
//C 可以放在 D (500) 和 M (1000) 的左边,来表示 400 和 900。
if (i + 1 < chars.length && (chars[i + 1] == 'D' || chars[i + 1] == 'M')) num -= 100;
else num += 100;
} else if (chars[i] == 'D') num += 500;
else if (chars[i] == 'M') num += 1000;
}
return num;
}
最长公共前缀
public static String longestCommonPrefix(String[] strs) {
//如果字符串的长度为空或者0,返回""
if(strs==null||strs.length==0)return "";
//如果只有一个字符串,返回数组第一个字符串
if(strs.length==1)return strs[0];
for (int i = 1; i < strs.length; i++) {
//得到第一个字符串与后面字符串最长公共前缀,并且覆盖第一个
strs[0]=getTwoStrCom(strs[0],strs[i]);
}
return strs[0];
}
//比较两个字符串最长公共前缀
public static String getTwoStrCom(String str1, String str2) {
if (str2 == null || str1 == null || str2 == "" || str1 == "") return "";
int len = str1.length() > str2.length() ? str2.length() : str1.length();
StringBuffer buffer=new StringBuffer(new String(""));
for (int i = 0; i < len; i++) {
if(str1.charAt(i)==str2.charAt(i)){
buffer.append(str1.charAt(i));
}else //遇到不同的直接退出循环
break;
}
return buffer.toString();
}
有效的括号
2023-09-14
class Solution {
public boolean isValid(String s) {
int len=s.length();
if(len%2!=0)return false;
Stack<Character> stack=new Stack<>();
for(int i=0;i<len;i++){
char c=s.charAt(i);
if(c=='('||c=='{'||c=='[')stack.push(c);//如果是左括号先进去,直接放进栈
else if(stack.isEmpty())
return false;
//为右括号的时候需要弹出一个左括号,如果有 弹出一对括号剩下的都是对的
else if(c==')'&&stack.pop()!='(')
return false;
else if(c=='}'&&stack.pop()!='{')
return false;
else if(c==']'&&stack.pop()!='[')
return false;
}
return stack.isEmpty();//全部弹空,说明配对正确
}
}
一天一道,明天继续。。。