黑马程序员技术交流社区
标题:
我做了一道题,大家帮我看看问题出在哪里,我感觉思路上是行的通的
[打印本页]
作者:
630681386@qq.co
时间:
2014-2-18 23:05
标题:
我做了一道题,大家帮我看看问题出在哪里,我感觉思路上是行的通的
package com.itheima;
import java.util.Scanner;
public class Test1 {
/**
* 1.判断一个字符串是否是对称字符串
*例如"abc"不是对称字符串,"aba"、"abba"、"aaa"、"mnanm"是对称字符串
*思路:先将字符串拆分为一个字符数组
*/
public static void main(String[] args) {
//从控制台结收用户输入的一个字符串
Scanner sc=new Scanner(System.in);
System.out.println("请输入一个字符串:");
String str=sc.next();
//将字符串转换为一个字符数组
char [] charstr=str.toCharArray();
int j=1;//定义一个变量,赋值为1
for(int i=0;i<charstr.length;i++)//循环字符数组
{
if(charstr[i]==charstr[charstr.length-j])//当数组的第一个元素和最后一个元素相等的时候
{
if(i==j||i+j==charstr.length)//判断数组是否循环到最后
{
System.out.println("这个字符串是对称字符串");//打印输出是对称字符串
return;//结束程序
}
}
j++;//变量自加,判断第二位,和倒数第二位字符
}
//最后输出不是对称字符串
System.out.println("这个字符串不是对称字符串");
}
}
复制代码
当输入的字符串是“aa”的时候就判断失败了,大家能跟我说下为什么吗?
作者:
630681386@qq.co
时间:
2014-2-18 23:21
我找到问题的所在了?在for循环中加入
作者:
630681386@qq.co
时间:
2014-2-18 23:22
// if(charstr.length==2)
// {
// if(charstr[0]==charstr[1])
// {
// System.out.println("这个字符串是对称字符串");//打印输出是对称字符串
// return;//结束程序
// }
// }
但谁有更简单一点的方法
作者:
kevinmesss.tz
时间:
2014-2-18 23:41
我有一个思路不懂行不行
1、字符串变成字符数组
2、将字符数组变成变成List集合
3、反转List集合(asList())
4、将反转后的变回字符数组,在变回字符串(Collections.reverse())
5、用equals()判断字符串内容是否相同,相同就是对称的不同就是不对称
作者:
汪平乐
时间:
2014-2-19 10:01
自己的方法两种:
1.利用equals和StringBuffer的reverse()判断
if(str.equals(new StringBuffer(str).reverse().toString())){
return true;
}
2.利用递归
boolean isPalindrome(String str, int start, int end){
if(start == end ){
return true;
}
if(str.chartAt(start) == str.charAt(end)){
return isPalindrome(str, start+1, end-1);
}
return false;
}
作者:
630681386@qq.co
时间:
2014-2-19 11:24
谢谢大家谢谢大家
作者:
夏新¤Amoi
时间:
2014-2-19 22:25
我把你的for循环语句该了下
for(int i=0;i<charstr.length;i++)
{
if(charstr[i]==charstr[charstr.length-j])
{
if(i<charstr.length-j)
{
j++;
continue;
}
System.out.println("这个字符串是对称字符串");
return;
}
break;
}
System.out.println("这个字符串不是对称字符串");
}
作者:
山治0712
时间:
2014-2-20 20:58
我也要站楼主一席
StringBuilder sb = new StringBuilder();
for(int i = str.length - 1; i <= 0; i++){
sb.append( str.charAt(i) );
}
if(str.equals(sb.toString()))
{
sop("是对称字符串");
}else{
sop("不是对称字符串");
}
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2