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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 十进制小数转为二进制小数方法是什么_二进制转十进制计算题

    十进制小数转为二进制小数方法是什么_二进制转十进制计算题首先需要明确一点就是并不是所有的十进制小数都能用二进制数精确表示的。这是由于进制的局限性导致的。例如三进制的0.1,用十进制表示是无限循环小数0.333333…..十进制的小数转换为二进制的方法为十进制小数乘2,取出整数作为二进制小数第一位,余下的小数再乘以2,取出整数作为小数第二位,如此反复,直至余下的小数为0。例:十进制0.3750.375*2=0.75————0(0.75的整数部分为0)0.75*2=1.5————1(1.5的整数…

    2022年9月24日
    2
  • 各种插入函数收集整理

    各种插入函数收集整理

    2021年9月27日
    54
  • idea永2021.2激活码破解方法

    idea永2021.2激活码破解方法,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月14日
    47
  • 【Linux】open函数的参数和作用

    【Linux】open函数的参数和作用一、open函数用来干什么open函数在Linux下一般用来打开或者创建一个文件,我们可以根据参数来定制我们需要的文件的属性和用户权限等各种参数。二、open函数的定义和参数我们首先来看下open函数在Linux下的定义#include#include#includeintopen(constchar*pathnam

    2022年5月26日
    46
  • C++临界锁CCriticalSection在线程中的使用

    C++临界锁CCriticalSection在线程中的使用#define_AFXDLL#include<afxmt.h>#include<iostream>usingnamespacestd;CCriticalSectioncritical;inttick=0;DWORDWINAPIFunc1(LPVOIDlpParam);DWORD__stdcallFunc1(LPVOIDlpParam){critical.Lock();tick+=10;cout&lt.

    2022年7月20日
    20
  • uniapp背景图片占不满屏幕_vue背景图片加载不出来

    uniapp背景图片占不满屏幕_vue背景图片加载不出来1.手机支持base64(小于40kb会自动转换否则就只能自己动手了2.路径前面加~@如:background:url(“~@/static/img/phb-no2@2x.jpg”);图片大于40k可以自己转化转化base64使用如:background:url(“data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAu4AAAEoCAI…

    2022年9月19日
    2

发表回复

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

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