java判断回文字符串几种简单的实现

java判断回文字符串几种简单的实现java判断回文字符串几种简单的实现

大家好,又见面了,我是你们的朋友全栈君。

11年it研发经验,从一个会计转行为算法工程师,学过C#,c++,java,android,php,go,js,python,CNN神经网络,四千多篇博文,三千多篇原创,只为与你分享,共同成长,一起进步,关注我,给你分享更多干货知识!

java判断回文字符串几种简单的实现:

1.将字符串倒置后逐一比较,实现如下:

public class HuiWenTest {  
/** 
 * @SERLIN 
 */  
public static void main(String[] args) {  
    String str = "";  
    System.out.println("请输入一个字符串");  
    Scanner input = new Scanner(System.in);  
    str = input.next();  
  
    StringBuffer sb = new StringBuffer(str);  
    sb.reverse();// 将Str中的字符串倒置  
  
    int count = 0;  
    for (int i = 0; i < str.length(); i++) {  
        if (str.charAt(i) == sb.charAt(i)) {  
            count++;  
        }  
    }  
    if (count == str.length()) {  
          
        System.out.println("此字符串是一个回文字符串");  
    } else {  
        System.out.println("此字符串不是一个回文字符串");  
    }  
}  

2.将字符串倒置后创建新字符串直接比较,实现如下:

public class HuiWenTest2 {  
    /** 
     * @SERLIN 
     */  
    public static void main(String[] args) {  
        System.out.println("请输入一个字符串");  
        Scanner input = new Scanner(System.in);  
        String str = input.next();  
        StringBuilder sb=new StringBuilder(str);  
        sb.reverse();//将str倒置的方法  
        String newStr=new String(sb);  
        if(str.equals(newStr)){  
            System.out.println(str+"是回文字符串");  
        }else{  
            System.out.println(str+"不是回文字符串");  
        }  
    }  
}  

3.使用截取字符串的方式比较,实现如下:

public class HuiWenTest3 {  
    /** 
     * @SERLIN 
     */  
    public static void main(String[] args) {  
        System.out.println("请输入一个字符串");  
        Scanner input = new Scanner(System.in);  
        String str = input.next();  
        int count = 0;  
        for (int i = 0; i < str.length() / 2; i++) {  
        if ((str.substring(i, i + 1)).equals(str.substring(str.length() - 1- i, str.length() - i))) {  
                count++;  
            }  
        }  
        if (count == str.length() / 2) {  
            System.out.println("是回文字符串");  
        }else{  
            System.out.println("不是回文字符串");  
        }  
    }  
}  

4.判断回文数字(判断纯数字),实现如下

public class HuiWenNum {  
    /** 
     * @SERLIN 
     */  
    public static void main(String[] args) {  
        int n;  
        System.out.println("请输入一个整数:");   
        // 如果结果为回文数,跳出循环  
        while (true) {  
            Scanner InpuNum = new Scanner(System.in);  
            n = InpuNum.nextInt();  
            if (isHuiWen(n)) {  
                System.out.println(n + "是回文数!");  
                break;  
            } else {  
                System.out.println(n + "不是回文数!");  
            }  
        }  
    }  
  
  
    // 判断的数字是否是回文数  
    public static boolean isHuiWen(int n) {  
        int m = reverse(n);  
        if (m == n) {  
            return true;  
        } else {  
            return false;  
        }  
    }  
  
  
    // 将输入的数字进行倒置,以便进行判断是否是回文数  
    public static int reverse(int n) {  
        int temp = 0;// 临时变量  
        int j = 0;// 倒置后的数字  
        temp = n;// 将输入的数字赋值给临时变量  
        while (temp != 0) {  
            j = j * 10 + temp % 10;  
            temp /= 10;  
        }  
        return j;  
    }  
}  

·回文数的定义:

对于非负数 其左右两边完全相同 则是回文。 e.g: 121 11 等

对于负数 其绝对值左右两边完全相同 则是回文。 e.g: -121 -11 等

设计一个算法判断给定的数是否为回文数,如果是,输出true 反之 输出false;

c++代码:

#include <iostream>  
#include <math.h>  
  
using namespace std;  
  
bool isPadlindrome(int n)  
{  
    // 如果是int类型的最小值 显然不是回文数  
    if (n == INT_MIN)  
    {  
        return false;  
    }  
  
    // 绝对值  
    n = abs(n);  
  
    int tmp = 1;  
  
    // 将tmp位数变为与n一致  
    while(n / tmp >= 10) // 防止tmp溢出  
    {  
        tmp *= 10;  
    }  
  
    // n = 0 表示所有位比较完  
    while(n != 0)  
    {  
        // 最高位 != 最低位  
        if (n / tmp != n % 10)  
        {  
            return false;  
        }  
  
        // 最高位 = 最低位 去掉最高位 去掉最低位  
        // 继续比较  
        n = (n % tmp) / 10;  
        tmp /= 100;  
    }  
  
    return true;  
}  
  
int main(void)  
{  
    int n;  
    cin>>n;  
  
    if (isPadlindrome(n))  
    {  
        cout<<"true"<<endl;  
    }  
    else  
    {  
        cout<<"false"<<endl;  
    }  
  
    return 0;  
}  

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/134768.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Postgresql+Springboot yml基本使用[通俗易懂]

    Postgresql+Springboot yml基本使用[通俗易懂]一、Postgresql介绍PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函

    2025年7月14日
    3
  • apap图像全景拼接

    apap图像全景拼接文章目录基本原理图像配准关于最小割关于最大流apap的实现流程代码实现实验场景场景一场景二遇到的问题基本原理图像配准图像配准(apap)是将两张场景相关的图像进行映射,寻找其中的关系,多用在医学图像配准、图像拼接、不同摄像机的几何标定等方面,其研究也较为成熟。OpenCv中的stitching类就是使用了2007年的一篇论文(Automaticpanoramicimagestitchi…

    2022年9月22日
    5
  • java 身份证15位转18位「建议收藏」

    java 身份证15位转18位「建议收藏」1/**2*根据身份证号获取性别3*4*@parampid5*身份证号6*@return性别F为女M为男7*/8publicstaticStringg

    2022年8月5日
    7
  • CSS3 background-size 属性

    CSS3 background-size 属性

    2021年9月22日
    50
  • css字体渐变色_html美化代码

    css字体渐变色_html美化代码之前写了个稿子http://club.chinaren.com/163042278.html自己配了不少的颜色可是U盘不小心中毒格式化。没办法只好继续重来。。。。1#eff99cc#K自创黑色字体裹着一层粉色粉红蕾丝2#ecc33cc#cff9966外红内浅粉色3#e330066#cff99ff外紫内浅红4#u#b#eff99cc最简单的加闪加下横线的纯粉白字体我自…

    2022年10月17日
    3
  • HDU1754_I Hate It(线段树/单点更新)

    HDU1754_I Hate It(线段树/单点更新)

    2022年1月21日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号