【LeetCode】125. Valid Palindrome

题目:


简述题目:

    其实就是判断字符串是不是回文,也就是说这个字符串是不是正着念反着念都一样。这个题目是要求,不考虑符号,只看字母和数字。

思路:

    建一个列表或者数组吧(不过数组可能不太行,因为我的数组显示超时了。。),然后把满足要求的字符(字母和数字)放入列表中,在放入前做一个筛选,直接将小写字母和数字放进去,当遇到大写字母时,做一个转换,转换成小写字母再存进去。

    挺重要的一个要注意空串,我们可以默认空串是回文!

代码:

import java.util.ArrayList;


public class isPalindrome125 {
	public static boolean isPalindrome(String s) {
		if(s.isEmpty()){
			return true;
		}else{
			ArrayList<Character> list = new ArrayList<>();
			for(int i = 0; i < s.length(); i++){
				char ch = s.charAt(i);
				if((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')){
					list.add(ch);
				}else if(ch >= 'A' && ch <= 'Z'){
					int change =  ch + 'a' - 'A';
					ch = (char) change;
					list.add(ch);
				}
			}
			for(int i = 0; i < list.size();i++){
				if(list.get(i) != list.get(list.size() - i - 1)){
					return false;
				}
			}
			return true;
		}
		
//		if(s.isEmpty()){
//			return true;
//		}else{
//			char[] sArray = new char[s.length()];
//		int k = 0;
//		s = s.toLowerCase();
//		for(int i = 0 ; i < s.length() ;i++){
//			char ch = s.charAt(i);
//			if((ch >= 'a' && ch <= 'z') || (ch >= '0' && ch <= '9')){
//				sArray[k] = ch;
//				k++;
//			}
//		}
//		for (int i = 0; i <= sArray.length/2; i++) {
//			if(sArray[i] != sArray[k - i - 1]){
//				return false;
//			}
//		}
//        return true;
//		}
		
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "A man, a plan, a canal: Panama";
		System.out.println(isPalindrome(s));
	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值