回文子串啊

题目:

给定一个字符串,统计并返回	回文子串 的数目。

示例:

输入:s = "abc"
输出:3
解释:三个回文子串: "a", "b", "c"

输入:s = "aaa"
输出:6
解释:6个回文子串: "a", "a", "a", "aa", "aa", "aaa"

代码:

class Solution {
    public int countSubstrings(String s) {
        char[] ch = s.toCharArray();
        int num = 0;   //记录数量
        int i=0;   //中间指针位置
        while(i < ch.length){
            num ++; // 单个
            // 左右指针
            int l = i-1;
            int r = i+1;
            // 偶数 情况
            if(l>=0 && ch[i] == ch[l]){
                num ++;
                l--;
                while(l >= 0 && r < ch.length && ch[l] == ch[r]){
                    num ++;
                    l--;
                    r++;
                }
            }
			// 奇数情况
            int m = i-1;
            int n = i+1;
            while(m >= 0 && n < ch.length && ch[m] == ch[n]){
                num ++;
                m--;
                n++;
            }
            i++;
        }
        return num;
    }
}

思路:

  1. 首先想到的是定好中间指针,然后左右指针判断是否相等。
  2. 遇到问题是:没有统计到偶数的情况
  3. 偶数的情况的前提是第一次 i=l ;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值