zoukankan      html  css  js  c++  java
  • Java 判断回文字符串有多少和其中的最大字符串

    一、简介代码功能

      该代码的功能可以实现对任意的一段字符串进行判断是否有回文,回文有哪些,和其中的最大回文。

    二、代码部分

    1、全局变量

    1   static String hws = "";
    2     static int num = 0;
    3     static String[] hw;

    2、创建数组用于保存回文

    1   /**
    2      * 创建数组保存所有的回文
    3      * 
    4      * @return 返回一个String类型的数组
    5      */
    6     public static String[] createHw() {
    7         return new String[num];
    8     }

    3、将hws字符串更改为空字符

    1     /**
    2      * 将hws字符串更改为空字符
    3      */
    4     public static void hwsClose() {
    5         hws = "";
    6     }

    4、判断该字符串中存在的回文的数量

     1     /**
     2      * 判断该字符串中存在的回文的数量
     3      * 
     4      * @param c
     5      *            数组c ,c是用户输入的字符串转换为单个字符组成的数组
     6      * @return
     7      */
     8 
     9     public static int judgeNumber(char[] c) {
    10         for (int i = 0; i < c.length - 1; i++) {
    11             if (c[i] == c[i + 1]) {
    12                 num++;
    13             }
    14         }
    15         return num;
    16     }

    5、第一次判断字符串中前后的数是否存在相同

     1     /**
     2      * 第一次判断字符串中前后的数是否存在相同
     3      * 
     4      * @param c
     5      *            数组c ,c是用户输入的字符串转换为单个字符组成的数组
     6      */
     7 
     8     public static void judge(char[] c) {
     9         judgeNumber(c);
    10         if (num != 0) {
    11             hw = createHw();
    12             for (int i = 0; i < c.length - 1; i++) {
    13                 if (c[i] == c[i + 1]) {
    14                     hws = hws + c[i];
    15                     judge2(c, i, i + 1);
    16                     hw[--num] = hws;
    17                     hwsClose();
    18                 }
    19             }
    20         } else {
    21             System.out.println("该字符串没有回文");
    22         }
    23     }

    6、进行二次判断以当前相同的字符为起点,分别以前下标向前和该后下标向后进行比较()

     1   /**
     2      * 进行二次判断以当前相同的字符为起点,分别以前下标向前和该后下标向后进行比较()
     3      * 
     4      * @param c
     5      *            数组c ,c是用户输入的字符串转换为单个字符组成的数组
     6      * @param i
     7      *            数组前一个下标,该下标和后一个进行比较并且相同
     8      * @param k
     9      *            数组后一个下标,该下标和前一个进行比较并且相同
    10      */
    11 
    12     public static void judge2(char[] c, int i, int k) {
    13         if (i - 1 >= 0 && k + 1 < c.length) {
    14             if (c[i - 1] == c[k + 1]) {
    15                 hws = hws + c[i - 1];
    16                 judge2(c, i - 1, k + 1);
    17             }
    18         }
    19     }

    7、输出所得的回文

     1   /**
     2      * 获取所得的回文
     3      * 
     4      * @param c
     5      *            数组c ,c是用户输入的字符串转换为单个字符组成的数组
     6      */
     7 
     8     public static void outPalindrome(char[] c) {
     9         judge(c);
    10         if (hw!=null) {
    11             for (int i = 0; i < hw.length; i++) {
    12                 System.out.println(reverse(hw[i])+hw[i]);
    13             }
    14         } else {
    15             System.out.println("没有回文2");
    16         }
    17     }

    8、将最长的回文输出

     1   /**
     2      * 将最长的回文输出
     3      * 
     4      */
     5 
     6     public static void longestPalindromes() {
     7         String longest = null;
     8         if (hw!=null) {
     9             if (hw.length == 1) {
    10                 System.out.println(reverse(hw[0])+hw[0]);
    11             } else {
    12                 for (int i = 0; i < hw.length - 1; i++) {
    13                     for (int j = 0; j < hw.length - 1 - i; j++) {
    14                         if (hw[j].length() > hw[j + 1].length()) {
    15                             longest = hw[j + 1];
    16                             hw[j + 1] = hw[j];
    17                             hw[j] = longest;
    18                         }
    19                     }
    20                 }
    21                 for (int i = 0; i < hw.length - 1; i++) {
    22                     if (hw[hw.length - 1].length() == hw[hw.length - i - 1].length()) {
    23                         System.out.println(reverse(hw[hw.length - i - 1])+hw[hw.length - i - 1]);
    24                     }
    25                 }
    26             }
    27         } else {
    28             System.out.println("没有回文3");
    29         }
    30     }

    9、将字符串进行倒序

     1   /**
     2      * 将字符串进行倒序
     3      * @param string 将要被倒序的字符串
     4      * @return 返回倒序后的字符串
     5      */
     6     
     7     public static StringBuffer reverse(String string){
     8         StringBuffer sb=new StringBuffer();
     9         char a;
    10         for(int i=0;i<string.length();i++){
    11             a=string.charAt(string.length()-1-i);
    12             sb.append(a);
    13         }
    14         return sb;
    15     }

    10、测试代码

     1 public static void main(String[] args) {
     2         @SuppressWarnings("resource")
     3         Scanner sc = new Scanner(System.in);
     4         String s = sc.next();
     5         char[] c = s.toCharArray();
     6         System.out.println("--------输出所有的回文------");
     7         outPalindrome(c);
     8         System.out.println("--------输出最长的回文------");
     9         longestPalindromes();
    10   }

    三、测试结果

    1、输入数据:123

    结果图:

    2、输入数据:123321qwwqaartyuuytr1

    结果图:

    3、输入数据:123321qweewqasddsazxxzssgh31

    结果图:

  • 相关阅读:
    修改CentOS默认yum源为国内镜像
    linux下安装部署ansible
    Centos7 下安装部署zabbix-agent客户端
    Centos7下安装部署zabbix
    Jumpserver文档链接
    分布式部署文档
    分布式部署文档
    分布式部署文档
    分布式部署文档
    分布式部署文档
  • 原文地址:https://www.cnblogs.com/orchid9/p/6711356.html
Copyright © 2011-2022 走看看