大家好,又见面了,我是你们的朋友全栈君。
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;
}
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/134768.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...