「java回文字符串」java回文字符串判断代码

博主:adminadmin 2023-01-28 19:51:06 270

本篇文章给大家谈谈java回文字符串,以及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回文字符串的信息别忘了在本站进行查找喔。