13

  1. 判断一个字符串是否是回文串
    例如"abc"不是对称字符串,“aba”、“abba”、“aaa”、"mnanm"是对称字符串
package Q1;

import java.util.Scanner;

public class JudgeHuiwen {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        char[] x = s.toCharArray();
        char temp;
        for (int i = 0; i < x.length/2; i++) {
            temp = x[i];
            x[i] = x[x.length -1 - i];
            x[x.length - 1 - i] = temp;
        }
        String reverse = String.valueOf(x);
        if (s.compareTo(reverse) == 0)
            System.out.println("Yes");
        else
            System.out.println("No");
    }
}

  1. 统计大串中小串出现的次数
    举例:在字符串” woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun”中java出现了5次
package Q2;

import java.util.Scanner;

public class Cal {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        String sub = sc.nextLine();
        int i = 0;
        int index = 0;
        int count = 0;
        while(index != -1){
            index = s.indexOf(sub, i);
            count++;
            i = index + 1;
        }
        //因为变成-1的那一轮count++仍会执行,所以要-1
        count--;
        System.out.println(count);
    }

}

附加题:
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
注意:如果有多个最长回文串,返回其中一个即可

示例 1:
输入: “babad”
输出: “bab”
注意: “aba” 也是一个有效答案。
示例 2:
输入: “cbbd”
输出: “bb”

package Q3;

import java.util.Scanner;

public class Find {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String s = sc.nextLine();
        int start = 0;
        int end = s.length() - 1;
        //记录当前最长的回文子串
        int max = 0;
        String Max = new String();

        //双重循环,遍历所有子串
        for (; start < s.length() - 1; start++) {
            for (; end > start; end--) {
                String sub = s.substring(start, end + 1);//左闭右开,所以右边要用+1
                if (Judge(sub) == 1) {
                    //找到更长的回文子串就记录下长度,并更新
                    if (end - start > max)
                        Max = sub;

                    //因为双循环是以不同开头区分,所以每个开头字符找到的第一个回文子串即为该字符开头的最长回文子串,找到即可退出内循环
                    break;
                }
            }
            //内循环结束后,将end重置
            end = s.length() - 1;
        }
        System.out.println(Max);

    }

    //判断是否为回文串
    public static int Judge(String s) {
        char[] x = s.toCharArray();
        char temp;
        for (int i = 0; i < x.length/2; i++) {
            temp = x[i];
            x[i] = x[x.length -1 - i];
            x[x.length - 1 - i] = temp;
        }
        String reverse = String.valueOf(x);
        if (s.compareTo(reverse) == 0)
            return  1;
        else
            return  0;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值