
正文
回文字符串代码Java 回文字符串leetcode
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
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;}
参考资料:百度百科-回文串
相关问答
Q1: java 的一段监测回文代码
这段代码是判断输入的字符串是不是回文。
所谓回文,是指诸如:abcba这样的字符串,也就是说第一个字母也最后一个字母相同,第二个字母与倒数第二个字母相同,以些类推。
这段代码的关键是下面这几句:
while (j = (i / 2) -1 word.charAt(j) == word.charAt(i - j - 1))
j++;
这个就是从字符串的第一个字母开始逐一判断是否满足回文的要求,如果所有的都满足,那么,这个循环结束时,j = (i/2),这样就可以用下面的条件语句来判断是否为回文了。
下面是这段代码的注释,希望能帮到你~!
import java.util.Scanner;
public class PalindromeV1 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);//接受从控制台的输入
System.out.println("输入一个字符串: ");
String word = sc.next();//将用户输入的字符串保存到word中
int i = word.length();//获取输入的字符串的长度,保存到i中
int j = 0;//初始化变量j
//从字符串的第一个字母开始逐一判断是否满足回文的要求,如果所有的都满足,那么,这个循环结束时,j = (i/2)
while (j = (i / 2) - 1 word.charAt(j) == word.charAt(i - j - 1))
j++;
//判断是否为回文
if (j == i / 2)
System.out.println("输入字符串是回文.");
else
System.out.println("输入字符串不是回文.");
}
}
Q2: 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的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于回文字符串leetcode、回文字符串代码Java的信息别忘了在本站进行查找喔。






