Java实战四 判断是否为回文字符串

描述

给定一个长度为 n 的字符串,请编写一个函数判断该字符串是否回文。如果是回文请返回true,否则返回false。 

字符串回文指该字符串正序与其逆序逐字符一致。 

数据范围:0<n≤10000000<n≤1000000

要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)

示例1

输入:

"absba"

复制返回值:

true

示例2

输入:

"ranko"

复制返回值:

false

方法一:直接查找法,依旧是来自本人的笨蛋方法

import java.util.*;


public class Solution {
    public boolean judge (String str) {
        int len = str.length();
        for(int i = 0;i < len;i++){
            if(str.charAt(i) == str.charAt(len-1-i))
                continue;
            else
                return false;
        }
        return true;
    }
}

字符串定位用 charAt方法。

方法二:反转比较法,直呼好妙

关于StringBuffer

String是一个不可变的字符序列

StringBuffer是可变的字符序列

优缺点:

“String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。String的操作都是改变赋值地址而不是改变值操作。
StringBuffer是可变类,和线程安全的字符串操作类,任何对它指向的字符串的操作都不会产生新的对象。 每个StringBuffer对象都有一定的缓冲区容量,当字符串大小没有超过容量时,不会分配新的容量,当字符串大小超过容量时,会自动增加容量。”

原文链接:​​​​​​​https://blog.csdn.net/weixin_44519467/article/details/103947361?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163678843416780264067287%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163678843416780264067287&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-103947361.first_rank_v2_pc_rank_v29&utm_term=StringBuffer&spm=1018.2226.3001.4187​​​​​​​

import java.util.*;


public class Solution {
public boolean judge (String str) {
        StringBuffer s1=new StringBuffer(str);
        //反转
        String s2 = s1.reverse().toString();
        if(str.equals(s2))
            return true;
        else
            return false;
    }
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值