一、简介代码功能

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

二、代码部分

1、全局变量

   static String hws = "";
static int num = ;
static String[] hw;

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

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

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

     /**
* 将hws字符串更改为空字符
*/
public static void hwsClose() {
hws = "";
}

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

     /**
* 判断该字符串中存在的回文的数量
*
* @param c
* 数组c ,c是用户输入的字符串转换为单个字符组成的数组
* @return
*/ public static int judgeNumber(char[] c) {
for (int i = 0; i < c.length - 1; i++) {
if (c[i] == c[i + 1]) {
num++;
}
}
return num;
}

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

     /**
* 第一次判断字符串中前后的数是否存在相同
*
* @param c
* 数组c ,c是用户输入的字符串转换为单个字符组成的数组
*/ public static void judge(char[] c) {
judgeNumber(c);
if (num != 0) {
hw = createHw();
for (int i = 0; i < c.length - 1; i++) {
if (c[i] == c[i + 1]) {
hws = hws + c[i];
judge2(c, i, i + 1);
hw[--num] = hws;
hwsClose();
}
}
} else {
System.out.println("该字符串没有回文");
}
}

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

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

7、输出所得的回文

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

8、将最长的回文输出

   /**
* 将最长的回文输出
*
*/ public static void longestPalindromes() {
String longest = null;
if (hw!=null) {
if (hw.length == 1) {
System.out.println(reverse(hw[0])+hw[0]);
} else {
for (int i = 0; i < hw.length - 1; i++) {
for (int j = 0; j < hw.length - 1 - i; j++) {
if (hw[j].length() > hw[j + 1].length()) {
longest = hw[j + 1];
hw[j + 1] = hw[j];
hw[j] = longest;
}
}
}
for (int i = 0; i < hw.length - 1; i++) {
if (hw[hw.length - 1].length() == hw[hw.length - i - 1].length()) {
System.out.println(reverse(hw[hw.length - i - 1])+hw[hw.length - i - 1]);
}
}
}
} else {
System.out.println("没有回文3");
}
}

9、将字符串进行倒序

   /**
* 将字符串进行倒序
* @param string 将要被倒序的字符串
* @return 返回倒序后的字符串
*/ public static StringBuffer reverse(String string){
StringBuffer sb=new StringBuffer();
char a;
for(int i=0;i<string.length();i++){
a=string.charAt(string.length()-1-i);
sb.append(a);
}
return sb;
}

10、测试代码

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

三、测试结果

1、输入数据:123

结果图:

2、输入数据:123321qwwqaartyuuytr1

结果图:

3、输入数据:123321qweewqasddsazxxzssgh31

结果图:

Java 判断回文字符串有多少和其中的最大字符串的更多相关文章

  1. Java判断回文数算法简单实现

    好久没写java的代码了, 今天闲来无事写段java的代码,算是为新的一年磨磨刀,开个头,算法是Java判断回文数算法简单实现,基本思想是利用字符串对应位置比较,如果所有可能位置都满足要求,则输入的是 ...

  2. Java——判断回文

    package basic; import java.util.Scanner; public class Palindrome{ public static boolean isPalindrome ...

  3. java判断回文数

  4. 判断回文字符串、回文链表、回文数(python实现)

    所谓回文字符串,就是正读和反读都一样的字符串,比如"level"或者"noon"等等就是回文串.即是对称结构 判断回文字符串 方法一: def is_palin ...

  5. 判断回文字符串(c,python)

    回文字符串:一个字符串,不论是从左往右,还是从右往左,字符的顺序都是一样的(如abba,abcba等) 判断回文字符串比较简单,即用两个变量left,right模仿指针(一个指向第一个字符,一个指向最 ...

  6. HDOJ/HDU 2163 Palindromes(判断回文串~)

    Problem Description Write a program to determine whether a word is a palindrome. A palindrome is a s ...

  7. C语言 · 判断回文

    算法提高 判断回文   时间限制:1.0s   内存限制:512.0MB      编程判断一个字符串是否是回文,当字符串是回文时,输出字符串:yes!,否则输出字符串:no!.所谓回文即正向与反向的 ...

  8. [leetcode]125. Valid Palindrome判断回文串

    Given a string, determine if it is a palindrome, considering only alphanumeric characters and ignori ...

  9. C 语言实例 - 判断回文数

    C 语言实例 - 判断回文数 判断一个数是否为回文数. 设n是一任意自然数.若将n的各位数字反向排列所得自然数n1与n相等,则称n为一回文数.例如,若n=,则称n为一回文数:但若n=,则n不是回文数 ...

随机推荐

  1. unity3d教程-01-安装及使用Unity

    我们前往unity官网:https://unity3d.com/cn/ 选择下载个人版,免费使用,功能齐全,就是在应用启动时有unity的动画 支持正版从我做起 整个安装过程需要网络的支持 下载安装程 ...

  2. MySQL Sniffer

    MySQL Sniffer 是360开源的一个基于 MySQL 协议的抓包工具, 能实时抓取客户端端请求,并格式化输出操作语句,操作十分简单.对于问题的定位,操作的审核是个不错的利器. Github地 ...

  3. UISearchController 搜索

    UISearchController实现搜索 通过 UISearchController 实现 UISearchResultsUpdating 这个委托实现上面的效果: 视图中中需要声明UISearc ...

  4. MySQL+SSM+Ajax上传图片问题

    第一次写上传图片的代码,碰到很多问题.昨天做了整整一天,终于在晚上的时候成功了.大声欢呼. 但是,做完之后,还是有很多问题想不通.所以在这里也算是写个笔记,日后忘记了可以回顾,也算请教各路朋友.(^_ ...

  5. Linux 修改时区 不用重启

    1.cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 2.使用tzselect命令,根据提示选择 3.使用date查看是否修改正确 4.运行hwc ...

  6. Struts 基本概念,优点及不同版本之间的关系

    strutx 1.x struts 是 apache 基金会的一个开源项目. struts 是一套实现 MVC的框架. MVC = 程序分层设计的思想 = Model(数据访问层1) / View(视 ...

  7. 关于统一资源标志符URL的理解

    URL由三部分构成 A:B:C A:URL使用的领域 B:在此领域的类型名称 C:标识资源的具体位置 C可以是一个绝对路径,也可以是端口号加上资源名称,总之是可以唯一标示资源的标识 例: 在网址中 S ...

  8. GCC命令

    一. 常用编译命令选项 源程序test.c 1. 无选项编译链接用法:#gcc test.c作用:将test.c预处理.汇编.编译并链接形成可执行文件.这里未指定输出文件,默认输出为a.out. 2. ...

  9. JS中的普通函数和箭头函数

    最近被问到了一个问题: >javaScript 中的箭头函数 (=>) 和普通函数 (function) 有什么区别? 我当时想的就是:这个问题很简单啊~(flag),然后做出了错误的回答 ...

  10. Dark的项链(树链剖分)

    P2272 - Dark的锁链 Description 无向图中有N个节点和两类边,一类边被称为主要边,而另一类被称为附加边.Dark有N – 1条主要边,并且Dark的任意两个节点之间都存在一条只由 ...