「java回文字符串」java回文字符串判断代码
本篇文章给大家谈谈java回文字符串,以及java回文字符串判断代码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
- 1、Java语言如何判断一个字符串是否回文
- 2、【java】编写程序,要求判断从键盘输入的字符串是否为回文
- 3、JAVA正话反说判断“回文”,字符串的比较问题,贴代码:
- 4、Java 判断回文字符串有多少和其中的最大字符
- 5、java判断输入一段字符串是不是回文
Java语言如何判断一个字符串是否回文
Java语言判断一个字符串是否回文可以通过下面的函数进行判断:
import java.util.Scanner;
public class huiwen
{public static void main(String args[])
{Scanner sca=new Scanner(System.in);
String str=sca.nextLine();
int a=str.length();
int middle=a/2,i=3;
//char c1=(char) a,c2=(char) a;
for(i=0;imiddlestr.charAt(i)==str.charAt(a-1-i);i++)
{}
if(imiddle)
System.out.println(str+"不是回文");
else
System.out.println(str+"是回文");}}
扩展资料:
c/c++判断一个字符串是否回文的方法:
#include iostream
#include string
using namespace std;
int main()
{string str; int i,j,l;int flag = 1;
while (cin str)
{ l = str.length(); for (i = 0,j = l-1; i = j; i++,j--)
{ if (str[i] != str[j])
{ flag = 0;break; }}
if (flag)
cout "YES" endl;
else
cout "NO" endl;
flag = true;}
return 0;}
参考资料:百度百科-回文串
【java】编写程序,要求判断从键盘输入的字符串是否为回文
对于回文这个问题,我们一般的解决方法是用递归
package com.axjy.yzn;
public class Recursive {
public static void main(String[] args) {
System.out.println("Is abcba a Palindrome?"+isPalindrome("abcdcba"));
}
public static boolean isPalindrome(String s){
if(s.length()=1){
return true;
}else if(s.charAt(0) != s.charAt(s.length()-1)){
return false;
}
return isPalindrome(s.substring(1,s.length()-1));
}
}
JAVA正话反说判断“回文”,字符串的比较问题,贴代码:
这个问题,你可以逆向思考
现在出现的现象是无论输入什么,最终都会是回文,那也就是说,当执行
if(str1.equals(str2)){
System.out.println("是回文");}
else{
System.out.println("不是回文");}
一定都是执行的第一个打印语句
也就是说str1.equals(str2)一定返回true
也就是说这equals两个比较对象一定是相等,换句话说这个两个对象其实指的是一个对象,只是不同的引用名而已
也就是说str1和str2都是指的一个StringBuffer对象
也就是说reverse()方法是直接返回了本对象
查看源码证实:
/**
* @since JDK1.0.2
*/
@Override
public synchronized StringBuffer reverse() {
toStringCache = null;
super.reverse();
return this;
}
可以看到最终返回this,也就是返回的是本对象,也就证实了刚的想法
所以综上所诉,现在再来看一下整个代码的执行过程
创建了一个StringBuffer对象str1,里面包装的字符串是"上海自来水
"
打印对象str1,所以此时打印的是:上海自来水
给对象str1调用reverse()方法,此时并没有新创建一个StringBuffer,而是直接修改了str1里面的包装字符串,改为"水来自海上",并返回了str1对象给str2
所以str1和str2其实都指的是一个StringBuffer(里面包含的都是"水来自海上")
此时打印str2,当然显示的是"水来自海上",其实若这是你再打印哈str1就明白了,因为这个是str1也打印出来的是"水来自海上"
个人建议写法
因为你只是需要做一个回文的功能,因此可以只是把StringBuffer的reverse方法作为一个工具即可,所以建议如下写法
String str1 = "上海自来水";
System.out.println("原来的话为:"+str1);
String str2=new StringBuffer(str1).reverse().toString();
System.out.println("正话反说为:"+str2);
if(str1.equals(str2)){
System.out.println("是回文");}
else{
System.out.println("不是回文");}
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 }
java判断输入一段字符串是不是回文
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str = scanner.next();
boolean isloop = isLoop(str);
if (isloop) {
System.out.println(str + "是回文字符");
} else {
System.out.println(str + "不是回文字符");
}
}
public static boolean isLoop(String str) {
for (int i = 0, j = str.length() - 1; i str.length() / 2; i++, j--) {
if (str.charAt(i) != str.charAt(j)) {
return false;
}
}
return true;
}
}
java回文字符串的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java回文字符串判断代码、java回文字符串的信息别忘了在本站进行查找喔。